diff options
author | Ivaylo Asenov <iasenov@mm-sol.com> | 2016-08-31 13:23:31 +0300 |
---|---|---|
committer | Ivaylo Asenov <iasenov@mm-sol.com> | 2016-08-31 13:23:31 +0300 |
commit | 521e8e746308ece38b0a8d9cff7abc60b6ccf456 (patch) | |
tree | 3264ef08d32139981ea9714ee02c8b02d51736f0 | |
download | benchmark-521e8e746308ece38b0a8d9cff7abc60b6ccf456.tar.gz |
Framework for running benchmarks
Change-Id: Ie697f7a9aa50d524525d7c300f920824c86eb04a
Signed-off-by: Ivaylo Asenov <iasenov@mm-sol.com>
61 files changed, 1937 insertions, 0 deletions
diff --git a/BenchmarkFramework/.gitignore b/BenchmarkFramework/.gitignore new file mode 100644 index 0000000..9c4de58 --- /dev/null +++ b/BenchmarkFramework/.gitignore @@ -0,0 +1,7 @@ +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures diff --git a/BenchmarkFramework/.idea/.name b/BenchmarkFramework/.idea/.name new file mode 100644 index 0000000..f115ad3 --- /dev/null +++ b/BenchmarkFramework/.idea/.name @@ -0,0 +1 @@ +BenchmarkFramework
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/compiler.xml b/BenchmarkFramework/.idea/compiler.xml new file mode 100644 index 0000000..96cc43e --- /dev/null +++ b/BenchmarkFramework/.idea/compiler.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <resourceExtensions /> + <wildcardResourcePatterns> + <entry name="!?*.java" /> + <entry name="!?*.form" /> + <entry name="!?*.class" /> + <entry name="!?*.groovy" /> + <entry name="!?*.scala" /> + <entry name="!?*.flex" /> + <entry name="!?*.kt" /> + <entry name="!?*.clj" /> + <entry name="!?*.aj" /> + </wildcardResourcePatterns> + <annotationProcessing> + <profile default="true" name="Default" enabled="false"> + <processorPath useClasspath="true" /> + </profile> + </annotationProcessing> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/copyright/profiles_settings.xml b/BenchmarkFramework/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/BenchmarkFramework/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ +<component name="CopyrightManager"> + <settings default="" /> +</component>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/gradle.xml b/BenchmarkFramework/.idea/gradle.xml new file mode 100644 index 0000000..0833b17 --- /dev/null +++ b/BenchmarkFramework/.idea/gradle.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="GradleSettings"> + <option name="linkedExternalProjectsSettings"> + <GradleProjectSettings> + <option name="distributionType" value="LOCAL" /> + <option name="externalProjectPath" value="$PROJECT_DIR$" /> + <option name="gradleHome" value="$APPLICATION_HOME_DIR$/gradle/gradle-2.4" /> + <option name="gradleJvm" value="1.7" /> + <option name="modules"> + <set> + <option value="$PROJECT_DIR$" /> + <option value="$PROJECT_DIR$/app" /> + </set> + </option> + </GradleProjectSettings> + </option> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/misc.xml b/BenchmarkFramework/.idea/misc.xml new file mode 100644 index 0000000..1a3eaff --- /dev/null +++ b/BenchmarkFramework/.idea/misc.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="EntryPointsManager"> + <entry_points version="2.0" /> + </component> + <component name="NullableNotNullManager"> + <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> + <option name="myNullables"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> + </list> + </value> + </option> + <option name="myNotNulls"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> + </list> + </value> + </option> + </component> + <component name="ProjectLevelVcsManager" settingsEditedManually="false"> + <OptionsSetting value="true" id="Add" /> + <OptionsSetting value="true" id="Remove" /> + <OptionsSetting value="true" id="Checkout" /> + <OptionsSetting value="true" id="Update" /> + <OptionsSetting value="true" id="Status" /> + <OptionsSetting value="true" id="Edit" /> + <ConfirmationsSetting value="0" id="Add" /> + <ConfirmationsSetting value="0" id="Remove" /> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/build/classes" /> + </component> + <component name="ProjectType"> + <option name="id" value="Android" /> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/modules.xml b/BenchmarkFramework/.idea/modules.xml new file mode 100644 index 0000000..0ffaf23 --- /dev/null +++ b/BenchmarkFramework/.idea/modules.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/BenchmarkFramework.iml" filepath="$PROJECT_DIR$/BenchmarkFramework.iml" /> + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> + </modules> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/runConfigurations.xml b/BenchmarkFramework/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/BenchmarkFramework/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> + </set> + </option> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/.idea/vcs.xml b/BenchmarkFramework/.idea/vcs.xml new file mode 100644 index 0000000..6564d52 --- /dev/null +++ b/BenchmarkFramework/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="" vcs="" /> + </component> +</project>
\ No newline at end of file diff --git a/BenchmarkFramework/BenchmarkFramework.iml b/BenchmarkFramework/BenchmarkFramework.iml new file mode 100644 index 0000000..1b769c3 --- /dev/null +++ b/BenchmarkFramework/BenchmarkFramework.iml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id="BenchmarkFramework" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="java-gradle" name="Java-Gradle"> + <configuration> + <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> + <option name="BUILDABLE" value="false" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/.gradle" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module>
\ No newline at end of file diff --git a/BenchmarkFramework/Readme.txt b/BenchmarkFramework/Readme.txt new file mode 100644 index 0000000..4fb14b1 --- /dev/null +++ b/BenchmarkFramework/Readme.txt @@ -0,0 +1,38 @@ +*************************************************************************** +This file includes a little info about "benchmarkframework" application. +*************************************************************************** + +1) The main target of the application is to run different benchmark tests integrated inside the app and written on (JAVA/C/C++) + + +2) There are 6 tests integrated for now: + +- "MemSpeed" // This benchmark is integrated as *so library and will be remove if not needed. Source code: http://www.roylongbottom.org.uk/android%20benchmarks.htm#anchor17 + +- "RandMem" // This benchmark is integrated as *so library and will be remove if not needed. Source code: http://www.roylongbottom.org.uk/android%20benchmarks.htm#anchor17 + +- "Linaro-Libc-Bench" // This benchmark is integrated as executable file related to task: https://projects.linaro.org/browse/LMG-1420 + // Source code: git://android-git.linaro.org/platform/external/libc-bench + +- "Linaro-StringBench" //This benchmark is integrated as executable file related to task: https://projects.linaro.org/browse/LMG-1420 + // Source code: git://android-git.linaro.org/platform/external/stringbench + +- "Linaro-Harness" //This benchmark is integrated as executable file related to task: https://projects.linaro.org/browse/LMG-1420 + // Source code: git://android-git.linaro.org/platform/external/stringbench + +- "Linaro-Dhrystone" //This benchmark is integrated as executable file related to task: https://projects.linaro.org/browse/LMG-1420 + // Source code: git://android-git.linaro.org/platform/external/stringbench + + + +3)Functionality: + + 3.1) Select single test and run it pressing [RUN TEST] button. After test is finished results are displayed. If you want to save them press [SAVE] button. + 3.2) Pressing [RUN AUTO] button starts all 6 tests one by one in row. After all tests are finished the results for them will be saved automaticaly. + 3.3) Pressing [i] button give some help about the usage. + + + +4)Notes: The started test cannot be stopped for now (No "Cancel" button on ProgressDialog) so wait until test is finished. The most time consumer test is "Linaro-StringBench". + If there are some issues use logcat for more info. + diff --git a/BenchmarkFramework/app/.gitignore b/BenchmarkFramework/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/BenchmarkFramework/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/BenchmarkFramework/app/app.iml b/BenchmarkFramework/app/app.iml new file mode 100644 index 0000000..ef28018 --- /dev/null +++ b/BenchmarkFramework/app/app.iml @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="BenchmarkFramework" external.system.module.version="unspecified" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":app" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="SELECTED_TEST_ARTIFACT" value="_android_test_" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" /> + <option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" /> + <afterSyncTasks> + <task>generateDebugAndroidTestSources</task> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false"> + <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.1.0/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/23.1.0/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.0/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.0/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" exported="" name="recyclerview-v7-23.1.0" level="project" /> + <orderEntry type="library" exported="" name="support-annotations-23.1.0" level="project" /> + <orderEntry type="library" exported="" name="appcompat-v7-23.1.0" level="project" /> + <orderEntry type="library" exported="" name="design-23.1.0" level="project" /> + <orderEntry type="library" exported="" name="support-v4-23.1.0" level="project" /> + </component> +</module>
\ No newline at end of file diff --git a/BenchmarkFramework/app/build.gradle b/BenchmarkFramework/app/build.gradle new file mode 100644 index 0000000..f6a03c0 --- /dev/null +++ b/BenchmarkFramework/app/build.gradle @@ -0,0 +1,27 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.2" + + defaultConfig { + applicationId "org.linaro.iasenov.benchmarkframework" + minSdkVersion 12 + targetSdkVersion 23 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + compile fileTree(dir: 'libs', include: ['*.jar']) + //testCompile 'junit:junit:4.12' + compile 'com.android.support:appcompat-v7:23.1.0' + compile 'com.android.support:design:23.1.0' +} diff --git a/BenchmarkFramework/app/proguard-rules.pro b/BenchmarkFramework/app/proguard-rules.pro new file mode 100644 index 0000000..0f84e0f --- /dev/null +++ b/BenchmarkFramework/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/users/iasenov/Downloads/android-sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/BenchmarkFramework/app/src/androidTest/java/org/linaro/iasenov/benchmarkframework/ApplicationTest.java b/BenchmarkFramework/app/src/androidTest/java/org/linaro/iasenov/benchmarkframework/ApplicationTest.java new file mode 100644 index 0000000..e09c307 --- /dev/null +++ b/BenchmarkFramework/app/src/androidTest/java/org/linaro/iasenov/benchmarkframework/ApplicationTest.java @@ -0,0 +1,13 @@ +package org.linaro.iasenov.benchmarkframework; + +import android.app.Application; +import android.test.ApplicationTestCase; + +/** + * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> + */ +public class ApplicationTest extends ApplicationTestCase<Application> { + public ApplicationTest() { + super(Application.class); + } +}
\ No newline at end of file diff --git a/BenchmarkFramework/app/src/main/AndroidManifest.xml b/BenchmarkFramework/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..93c61e7 --- /dev/null +++ b/BenchmarkFramework/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.linaro.iasenov.benchmarkframework" > + + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.READ_LOGS" /> + + + + <application + android:allowBackup="true" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:supportsRtl="true" + android:theme="@style/AppTheme" > + <activity + android:name=".MainActivity" + android:label="@string/app_name" + android:theme="@style/AppTheme.NoActionBar" > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> diff --git a/BenchmarkFramework/app/src/main/assets/cbench b/BenchmarkFramework/app/src/main/assets/cbench Binary files differnew file mode 100755 index 0000000..330d58d --- /dev/null +++ b/BenchmarkFramework/app/src/main/assets/cbench diff --git a/BenchmarkFramework/app/src/main/assets/dhry b/BenchmarkFramework/app/src/main/assets/dhry Binary files differnew file mode 100755 index 0000000..d8b7cd4 --- /dev/null +++ b/BenchmarkFramework/app/src/main/assets/dhry diff --git a/BenchmarkFramework/app/src/main/assets/harness b/BenchmarkFramework/app/src/main/assets/harness Binary files differnew file mode 100755 index 0000000..9684311 --- /dev/null +++ b/BenchmarkFramework/app/src/main/assets/harness diff --git a/BenchmarkFramework/app/src/main/assets/stringbench b/BenchmarkFramework/app/src/main/assets/stringbench Binary files differnew file mode 100755 index 0000000..8393da2 --- /dev/null +++ b/BenchmarkFramework/app/src/main/assets/stringbench diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/BaseBenchmark.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/BaseBenchmark.java new file mode 100644 index 0000000..b78c55e --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/BaseBenchmark.java @@ -0,0 +1,270 @@ +package org.linaro.iasenov.benchmarkframework; + +import android.content.res.AssetManager; +import android.util.Log; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * Created by iasenov on 8/22/16. + */ +public class BaseBenchmark { + + public String benchmarkName; + public String version; + public String date$; + public static long startTest; + public static long endTest; + public static double testTime; + + public String[] xout = new String[20]; + + private String TAG = "BaseBenchmark"; + + + //********************************************************************************************** + //Clear test tags and result and fill version and date for the test + //********************************************************************************************** + public void clear() { + Date today = Calendar.getInstance().getTime(); + SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy HH.mm"); + date$ = formatter.format(today); + + xout[0] = version + " " + date$ + "\n"; //Line for test version + xout[1] = "\n"; + xout[2] = "\n"; //Line for test labels + xout[3] = "\n"; //Line for test labels + xout[4] = "\n"; //Line for test labels + xout[5] = "\n"; //Line for test result + xout[6] = "\n"; //Line for test result + xout[7] = "\n"; //Line for test result + xout[8] = "\n"; //Line for test result + xout[9] = "\n"; //Line for test result + xout[10] = "\n"; //Line for test result + xout[11] = "\n"; //Line for test result + xout[12] = "\n"; //Line for test result + xout[13] = "\n"; //Line for test result + xout[14] = "\n"; //Line for test result + xout[15] = "\n"; + xout[16] = "\n"; //Line for total elapsed time + } + + //********************************************************************************************** + //return string with test result ready to be shown on TextView + //********************************************************************************************** + public String getBenchmarkResult(int elapsedTimeIdx) { + testTime = (double) (endTest - startTest) / 1000; + + if(elapsedTimeIdx == -1) + { + elapsedTimeIdx = 16; + } + + xout[15] = "\n"; + xout[elapsedTimeIdx] = " Total Elapsed Time " + String.format("%5.1f", testTime) + + " seconds\n"; + + return xout[0] + xout[1] + xout[2] + xout[3] + + xout[4] + xout[5] + xout[6] + xout[7] + + xout[8] + xout[9] + xout[10] + xout[11] + + xout[12] + xout[13] + xout[14] + xout[15] + + xout[16]; + } + + //********************************************************************************************** + //This method is called from MainActivity for related(chosen) test + //all test class that extend BaseBenchmark implement this method + //********************************************************************************************** + public String startBenchmark(int count) { + return null; + } + + //********************************************************************************************** + //Read from logcat by selected "tag" and return string with all lines found + //********************************************************************************************** + public String readFromLogcat(String tag) { + StringBuilder log = null; + try { + Process process = Runtime.getRuntime().exec("logcat -d -s " + tag); + BufferedReader bufferedReader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + + log = new StringBuilder(); + + String separator = System.getProperty("line.separator"); + String line; + while ((line = bufferedReader.readLine()) != null) { + line = line.replace("I/" + tag + "(", ""); + int index = line.indexOf(")"); + line = line.substring(index + 3); + line = line.replace("null", ""); + log.append(line); + log.append(separator); + } + } catch (IOException e) { + e.printStackTrace(); + } + + return log.toString(); + } + + //********************************************************************************************** + //Clear logcat + //********************************************************************************************** + public void clearLogcat() { + try { + Runtime.getRuntime().exec(new String[]{"logcat", "-c"}); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + + //********************************************************************************************** + //Read from log file (fill with logcat lines) by selected "tag" + //********************************************************************************************** + public String readFromLogcatFile(String tag) { + + + //Get the logcat text file + File file = new File(MainActivity.LOG_PATH); + + //Read text from file + StringBuilder text = new StringBuilder(); + + try { + BufferedReader br = new BufferedReader(new FileReader(file)); + String line; + + while ((line = br.readLine()) != null) { + line = line.replace("I/" + tag + "(", ""); + int index = line.indexOf(")"); + line = line.substring(index + 3); + line = line.replace("null", ""); + text.append(line); + text.append('\n'); + } + br.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + return text.toString(); + } + + + //********************************************************************************************** + //Copy file with InputStream "in" to file with OutputStream "out" + //********************************************************************************************** + public void copy(InputStream in, OutputStream out) + { + try { + byte[] buffer = new byte[1024]; + int read; + while ((read = in.read(buffer)) != -1) { + out.write(buffer, 0, read); + } + in.close(); + in = null; + + // write the output file (You have now copied the file) + out.flush(); + out.close(); + out = null; + + + } catch (FileNotFoundException fnfe1) { + Log.i(TAG, fnfe1.getMessage()); + } + catch (Exception e) { + Log.i(TAG, e.getMessage()); + } + + Log.i(TAG, "Copy end"); + } + + + + + + //********************************************************************************************** + //Copy "executable_filename" from assets to "EXECUTABLE_PATH" and execute this file + //Return String from process's stdout + //********************************************************************************************** + public String copyAssetsExecFileAndRun(String executable_filename, String param) { + + String executableFilePath = MainActivity.EXECUTABLE_PATH; + StringBuilder log = null; + + + File dir = new File(executableFilePath); + dir.mkdirs(); + + AssetManager assetManager = MainActivity.mActivity.getAssets(); + + InputStream in = null; + OutputStream out = null; + Log.d(TAG, "Attempting to copy this file: " + executable_filename); + + try { + in = assetManager.open(executable_filename); + + Log.i(TAG, "outDir: " + executableFilePath); + File outFile = new File(executableFilePath, executable_filename); + + out = new FileOutputStream(outFile); + + Log.i(TAG, "Copy begin"); + copy(in, out); + + } catch (IOException e) { + Log.i(TAG, "Failed to copy asset file: " + executable_filename, e); + } + + Log.i(TAG, "Copy success: " + executable_filename); + + try { + + File execFile = new File(executableFilePath + "/" + executable_filename); + execFile.setExecutable(true); + + Process process = Runtime.getRuntime().exec(executableFilePath + "/" + executable_filename + " " + param); + Log.i(TAG, "process:" + process.toString()); + + BufferedReader bufferedReader = new BufferedReader( + new InputStreamReader(process.getInputStream())); + + String separator = System.getProperty("line.separator"); + + log = new StringBuilder(); + String line; + while ((line = bufferedReader.readLine()) != null) { + line = line.replace("null", ""); + log.append(line); + log.append(separator); + log.append(separator); + Log.i(TAG, "process line:" + line); + } + + process.destroy(); + + }catch(Exception e){ + Log.i(TAG, "Failed execute: " + executableFilePath + "/" + executable_filename, e); + } + + return log.toString(); + } +//********************************************************************************************** +}//BaseBenchmark +//**********************************************************************************************
\ No newline at end of file diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/MainActivity.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/MainActivity.java new file mode 100644 index 0000000..e794a22 --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/MainActivity.java @@ -0,0 +1,639 @@ +package org.linaro.iasenov.benchmarkframework; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.ProgressDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.AssetManager; +import android.graphics.Color; +import android.graphics.Typeface; +import android.os.AsyncTask; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.provider.MediaStore; +import android.support.v7.app.AppCompatActivity; +import android.text.Html; +import android.text.method.ScrollingMovementMethod; +import android.util.DisplayMetrics; +import android.util.Log; +import android.util.TypedValue; +import android.view.View; +import android.view.Menu; +import android.view.MenuItem; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ListView; +import android.widget.Toast; +import android.widget.TextView; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.lang.reflect.Method; +import java.math.BigInteger; +import java.nio.channels.FileChannel; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.List; + +public class MainActivity extends AppCompatActivity implements View.OnClickListener { + + private String TAG = "BenchmarkFramework"; + + private Button mStartButton; + private Button mStartAutoButton; + private Button mSaveButton; + private Button mInfo; + private ListView mListView; + private TextView mDisplayDetails; + + private String mSelectedTest = ""; + private String mSelectedClassTest = ""; + private String autoTestFileNameIdentifier = "Default"; + private String mTestResult = ""; + private String PACKAGE_NAME; + private List<String> mAllTests; + + + private int nextTestIndex; + private int allTestsCount; + + private boolean isAuto = false; + public boolean isTempLogFileNeeded = false; + + private Context mContext; + + private static int pixWide; + private static int pixHigh; + private static int testDone = 0; + public static String LOG_PATH = ""; + public static String EXECUTABLE_PATH = ""; + public static Activity mActivity; + + private Typeface tf = Typeface.create("monospace", 0); + + public File autoTestFile; //file for auto saving tests results(when isAuto); + + final String[] classNameTestItems = new String[6]; + + + + //********************************************************************************************** + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + mContext = getApplicationContext(); + + mActivity = this; + + PACKAGE_NAME = getApplicationContext().getPackageName(); + + mStartButton = (Button)findViewById(R.id.startButton); + mStartButton.setOnClickListener(this); + + mStartAutoButton = (Button)findViewById(R.id.startAutoButton); + mStartAutoButton.setOnClickListener(this); + + mSaveButton = (Button)findViewById(R.id.saveButton); + mSaveButton.setOnClickListener(this); + + mInfo = (Button)findViewById(R.id.infoButton); + mInfo.setOnClickListener(this); + + mListView = (ListView) findViewById(R.id.tests_list_view); + + mDisplayDetails = (TextView)findViewById(R.id.displayDetails); + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + mDisplayDetails.setTypeface(tf); + + pixHigh = metrics.heightPixels; + pixWide = metrics.widthPixels; + testDone = 0; + + + int pixMin = pixWide; + if (pixHigh < pixMin) pixMin = pixHigh; + + mDisplayDetails.setTextSize(TypedValue.COMPLEX_UNIT_PX, getPixels(pixMin)); + + mDisplayDetails.setTextColor(Color.rgb(102, 255, 51)); + mDisplayDetails.setBackgroundColor(Color.BLACK); + + mDisplayDetails.setMovementMethod(new ScrollingMovementMethod()); + + LOG_PATH = getFilesDir() + "/logss" + "/tmpLog.txt"; + EXECUTABLE_PATH = getFilesDir() + "/executable_file"; + + classNameTestItems[0] = "Test1"; + classNameTestItems[1] = "Test2"; + classNameTestItems[2] = "Test3"; + classNameTestItems[3] = "Test4"; + classNameTestItems[4] = "Test5"; + classNameTestItems[5] = "Test6"; + + + String[] displayNames = new String[6]; + displayNames[0] = "MemSpeed"; + displayNames[1] = "RandMem"; + displayNames[2] = "Linaro-Libc-Bench"; + displayNames[3] = "Linaro-StringBench"; + displayNames[4] = "Linaro-Harness"; + displayNames[5] = "Linaro-Dhrystone"; + + ArrayAdapter listAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, displayNames); + + //ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, displayNames); + mListView.setAdapter(listAdapter); + + mListView.setChoiceMode(1); //single choice + + mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { + + mSelectedTest = (mListView.getItemAtPosition(i)).toString(); + mSelectedClassTest = classNameTestItems[i]; + + } + }); + + } + + //********************************************************************************************** + @Override + public void onResume(){ + super.onResume(); + // put your code here... + + } + + //********************************************************************************************** + //Load benchmarks libraries when benchmark test is integrated as (*.so) + //********************************************************************************************** + static + { + System.loadLibrary("memspeedlib"); + System.loadLibrary("randmemlib"); + //System.loadLibrary("cbench"); + //System.loadLibrary("stringbench"); + //System.loadLibrary("harness"); + } + + + //********************************************************************************************** + @Override + public void onClick(View v) + { + + if(v.getId() == R.id.startButton && mSelectedTest!="") + { + isAuto = false; + + mDisplayDetails.setText(mSelectedTest + " is running please wait..."); + + if(mSelectedClassTest.equals("Test4")) + { + isTempLogFileNeeded = true; + }else + { + isTempLogFileNeeded = false; + } + + AsyncTaskRunner runner = new AsyncTaskRunner(mSelectedTest, mSelectedClassTest); + runner.execute(mSelectedTest); + + } + else if(v.getId() == R.id.startButton && mSelectedTest=="") + { + Toast.makeText(v.getContext(),"Please select test...", + Toast.LENGTH_SHORT).show(); + } + else if(v.getId() == R.id.saveButton && testDone==1) + { + saveUIResultToFile(); + } + else if(v.getId() == R.id.saveButton && testDone==0) + { + Toast.makeText(v.getContext(),"No results for save", + Toast.LENGTH_SHORT).show(); + }else if(v.getId() == R.id.startAutoButton) + { + isAuto = true; + runAutoTest(); + }else if(v.getId() == R.id.infoButton) + { + String info = "[RUN TEST]: Run single test<br><br> [RUN AUTO]: Run all tests in row and save results to file automatically<br><br> [SAVE]: Save results from single test"; + + createAlertDialog("Help", info); + } + } + + + + //********************************************************************************************** + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.menu_main, menu); + return true; + } + + + + //********************************************************************************************** + @Override + public boolean onOptionsItemSelected(MenuItem item) { + // Handle action bar item clicks here. The action bar will + // automatically handle clicks on the Home/Up button, so long + // as you specify a parent activity in AndroidManifest.xml. + int id = item.getItemId(); + + //noinspection SimplifiableIfStatement + if (id == R.id.action_settings) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + private void displayResult(String result) + { + mDisplayDetails.setText(result); + } + //********************************************************************************************** + + + + //********************************************************************************************** + //Calculate best text size depends on pixels + //********************************************************************************************** + public int getPixels(int pixMin) + { + int pixels = 11; + + if (pixMin < 401) + { + pixels = 12; + } + else if (pixMin < 451) + { + pixels = 14; + } + else if (pixMin < 501) + { + pixels = 15; + } + else if (pixMin < 551) + { + pixels = 16; + } + else if (pixMin < 601) + { + pixels = 18; + } + else if (pixMin < 651) + { + pixels = 20; + } + else if (pixMin < 721) + { + pixels = 22; + } + else if (pixMin < 751) + { + pixels = 23; + } + else if (pixMin < 801) + { + pixels = 24; + } + else if (pixMin < 851) + { + pixels = 26; + } + else if (pixMin < 901) + { + pixels = 28; + } + else if (pixMin < 951) + { + pixels = 30; + } + else + { + pixels = 32; + } + + return pixels; + } + + + + //********************************************************************************************** + //Save "mDisplayDetails" text to file + //********************************************************************************************** + public void saveUIResultToFile(){ + + File dir = new File (getFilesDir() + "/download"); + dir.mkdirs(); + File file = new File(dir, "testUIData.txt"); + + try { + FileOutputStream f = new FileOutputStream(file); + PrintWriter pw = new PrintWriter(f); + pw.println(mDisplayDetails.getText().toString()); + pw.flush(); + pw.close(); + f.close(); + + Log.i("IVO", getFilesDir() + " FilePath: " + file.getAbsolutePath()); + Toast.makeText(mContext,"Result was saved to file: " + file.getAbsolutePath(), + Toast.LENGTH_LONG).show(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + //********************************************************************************************** + //Save results from Auto tests to text file with random name every time + //********************************************************************************************** + public void saveAutoTestResultToFile(){ + + File dir = new File (getFilesDir() + "/download"); + dir.mkdirs(); + autoTestFile = new File(dir, "testLogcatData_"+autoTestFileNameIdentifier+".txt"); + + + try { + FileOutputStream f = new FileOutputStream(autoTestFile,true); + PrintWriter pw = new PrintWriter(f); + pw.println(mTestResult/*mDisplayDetails.getText().toString()*/); + pw.flush(); + pw.close(); + f.close(); + + Log.i("IVO", getFilesDir() + " FilePath: " + autoTestFile.getAbsolutePath()); + //Toast.makeText(mContext,"Result was saved to file: " + file.getAbsolutePath(), + // Toast.LENGTH_LONG).show(); + + + } catch (FileNotFoundException e) { + e.printStackTrace(); + + } catch (IOException e) { + e.printStackTrace(); + } + + } + + + + //********************************************************************************************** + //Run all tests one by one automatically + //********************************************************************************************** + public void runAutoTest() { + + nextTestIndex = 0; + allTestsCount = 0; + mAllTests = new ArrayList<String>(); + mAllTests.clear(); + + + for (int i = 0; i < mListView.getCount(); i++) { + mAllTests.add((mListView.getItemAtPosition(i)).toString()); + } + + allTestsCount = mAllTests.size(); + Log.i(TAG, "autoTest:" + allTestsCount); + + if (mAllTests.size() > 0){ + + SecureRandom random = new SecureRandom(); + autoTestFileNameIdentifier = new BigInteger(11, random).toString(32); + + + for(int i = 0; i < allTestsCount; i++) { + + isTempLogFileNeeded = false;//make it false for now + + if (nextTestIndex < allTestsCount) { + mSelectedTest = mAllTests.get(nextTestIndex); + mSelectedClassTest = classNameTestItems[nextTestIndex]; + + String localSelectedTest = mSelectedTest; + String localSelectedClassTest = mSelectedClassTest; + + //if(!localSelectedClassTest.equals("Test4")) { //Test4 is too long so stop it for faster debugging + + AsyncTaskRunner runner = new AsyncTaskRunner(localSelectedTest, localSelectedClassTest); + //runner.execute(mSelectedTest); + runner.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, localSelectedTest); + //} + nextTestIndex++; + } + + } + + } + } + + + + //********************************************************************************************** + //Can Use this method when benchmark test take a lot of time and logcat dev/log/main ring buffer is overloaded + //Reads only app logs + //********************************************************************************************** + public Process writeLogcatToFile(File tempLogFile) { + + Log.i(TAG, "writeLogcatToFile"); + Process process = null; + + try { + Runtime.getRuntime().exec(new String[]{"logcat", "-c"}); + + File dir = new File(getFilesDir() + "/logss"); + dir.mkdirs(); + tempLogFile = new File(dir, "tmpLog.txt"); + tempLogFile.delete(); + tempLogFile = new File(dir, "tmpLog.txt"); + process = Runtime.getRuntime().exec("logcat -f " + tempLogFile.getAbsolutePath()); + + + + } catch (Exception e1) { + e1.printStackTrace(); + } + + return process; + } + //********************************************************************************************** + + public void createAlertDialog(String title, String message){ + AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create(); + alertDialog.setTitle(title); + alertDialog.setMessage(Html.fromHtml(message)); + alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }); + alertDialog.show(); + } + //********************************************************************************************** + + //********************************************************************************************** + //Async task for background test processing + //********************************************************************************************** + public class AsyncTaskRunner extends AsyncTask<String, String, String> { + + private String resp; + ProgressDialog progressDialog; + String selectedTest; + String selectedClassTest; + + + public AsyncTaskRunner(String test, String classTest) { + super(); + selectedTest = test; + selectedClassTest = classTest; + } + + + @Override + protected String doInBackground(String... params) { + + publishProgress(selectedTest, selectedClassTest); + + try { + + testDone = 0; + + Class thisClass = Class.forName(PACKAGE_NAME + "." + selectedClassTest); + Object iClass = thisClass.newInstance(); + Method thisMethod = thisClass.getMethod("startBenchmark", Integer.TYPE); + + mTestResult = (String) (thisMethod.invoke(iClass, 1)); + + if(isAuto) { + saveAutoTestResultToFile(); + } + testDone = 1; + + + } catch (Exception e) { + e.printStackTrace(); + resp = e.getMessage(); + } + return selectedClassTest; + } + + + @Override + protected void onPostExecute(String result) { + // execution of result of Long time consuming operation + progressDialog.dismiss(); + //finalResult.setText(result); + + displayResult(mTestResult); //UI display + Log.i(TAG, mTestResult); //adb logcat display + + if(isAuto && result.equals(classNameTestItems[5])) { //if Auto test and if last + + + String filepath = "<font color=\"blue\">"+autoTestFile.getAbsolutePath()+"</font>"; + createAlertDialog("File with results created", filepath); + } + } + + + @Override + protected void onPreExecute() { + + Log.i(TAG, "selectedTest:" + selectedTest); + + if(isAuto) { + mDisplayDetails.setText(selectedTest + " is running please wait..."); + } + } + + + @Override + protected void onProgressUpdate(String... text) { + + mDisplayDetails.setText(text[0] + " is running please wait..."); + + + String extraText = ""; + if(text[1].equals(("Test4"))) //set some extra text for this test to inform user for longer wait. + { + extraText = "\n\nNote: This test can take more than 30 min. so be patient..."; + } + + progressDialog = new ProgressDialog(MainActivity.this); + progressDialog.setTitle("ProgressDialog"); + progressDialog.setMessage(text[0] + " is running please wait..." +extraText); + progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); + + + // Put a cancel button in progress dialog + /* TODO: Set Cancel button for cancelling the test + progressDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { + // Set a click listener for progress dialog cancel button + @Override + public void onClick(DialogInterface dialog, int which) { + // dismiss the progress dialog + progressDialog.dismiss(); + // Tell the system about cancellation + //isCanceled = true; + } + }); + */ + + progressDialog.show(); + + + if(isAuto) { + + int mActivePosition = 0; + for (String className : classNameTestItems) + { + if(className.equals(text[1])) + { + //Click on the current test + mListView.performItemClick( + mListView.getAdapter().getView(mActivePosition, null, null), + mActivePosition, + mListView.getAdapter().getItemId(mActivePosition)); + } + mActivePosition++; + } + } + } + + //********************************************************************************************** + }//AsyncTaskRunner + //********************************************************************************************** + + +//********************************************************************************************** +}//MainActivity +//**********************************************************************************************
\ No newline at end of file diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test1.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test1.java new file mode 100644 index 0000000..c26c315 --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test1.java @@ -0,0 +1,35 @@ +package org.linaro.iasenov.benchmarkframework; + +/** + * Created by iasenov on 8/22/16. + */ +public class Test1 extends BaseBenchmark{ + + public native String stringFromJNI(int size1); + + private int runs = 10; // 2 * 4 DP MW arrays = 2 * 32 MB + + + public String startBenchmark(int count) + { + version = " Android MemSpeed Benchmark 1.1"; + benchmarkName = "Test1"; + + clear(); + + xout[2] = " Reading Speed in MBytes/Second\n"; + xout[3] = " Memory x[m]=x[m]+s*y[m] Int+ x[m]=x[m]+y[m]\n"; + xout[4] = " KBytes Dble Sngl Int Dble Sngl Int\n"; + + startTest = System.currentTimeMillis(); + + for (int size1=0; size1<runs; size1++) + { + xout[size1+5] = stringFromJNI(size1); + } + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(-1); + } +} diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test2.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test2.java new file mode 100644 index 0000000..1c80fb5 --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test2.java @@ -0,0 +1,35 @@ +package org.linaro.iasenov.benchmarkframework; + +/** + * Created by iasenov on 8/22/16. + */ +public class Test2 extends BaseBenchmark{ + + public native String stringFromJNI(int size1); + + private int runs = 10; // 2 * 4 DP MW arrays = 2 * 32 MB + + + public String startBenchmark(int count) + { + version = " Android RandMem Benchmark 1.1 "; + benchmarkName = "Test2"; + + clear(); + + xout[2] = " MBytes/Second Transferring 4 Byte Words \n"; + xout[3] = " Memory Serial....... Random.......\n"; + xout[4] = " KBytes Read Rd/Wrt Read Rd/Wrt\n"; + + startTest = System.currentTimeMillis(); + + for (int size1=0; size1<runs; size1++) + { + xout[size1+5] = stringFromJNI(size1); + } + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(-1); + } +} diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test3.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test3.java new file mode 100644 index 0000000..d3f657d --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test3.java @@ -0,0 +1,32 @@ +package org.linaro.iasenov.benchmarkframework; + +import android.util.Log; + + + +/** + * Created by iasenov on 8/24/16. + */ +public class Test3 extends BaseBenchmark{ + + + public String startBenchmark(int count) + { + version = " Libc-Bench 1.1"; + benchmarkName = "Test3"; + + + clear(); + + startTest = System.currentTimeMillis(); + + String param = ""; + + xout[2] = copyAssetsExecFileAndRun("cbench", param); + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(5); + } + +} diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test4.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test4.java new file mode 100644 index 0000000..eb256be --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test4.java @@ -0,0 +1,26 @@ +package org.linaro.iasenov.benchmarkframework; + +/** + * Created by iasenov on 8/25/16. + */ +public class Test4 extends BaseBenchmark{ + + public String startBenchmark(int count) + { + version = " StringBench 1.1 "; + benchmarkName = "Test4"; + + clear(); + + startTest = System.currentTimeMillis(); + + String param = ""; + + xout[2] = copyAssetsExecFileAndRun("stringbench", param); + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(5); + } + +} diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test5.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test5.java new file mode 100644 index 0000000..b42f821 --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test5.java @@ -0,0 +1,40 @@ +package org.linaro.iasenov.benchmarkframework; + +/** + * Created by iasenov on 8/26/16. + */ +public class Test5 extends BaseBenchmark{ + + public String startBenchmark(int count) + { + version = " HarnessBench 1.1 "; + benchmarkName = "Test5"; + + clear(); + + startTest = System.currentTimeMillis(); + + String tests[] = { "bounce", + "memchr", + "memcpy", + "memset", + "strchr", + "strcmp", + "strcpy", + "strlen"}; + + + String param = ""; + for(String test : tests) { + + param = "-t " + test; + xout[2] = xout[2] + "\n\n" + copyAssetsExecFileAndRun("harness", param); + + } + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(5); + } + +} diff --git a/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test6.java b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test6.java new file mode 100644 index 0000000..3965499 --- /dev/null +++ b/BenchmarkFramework/app/src/main/java/org/linaro/iasenov/benchmarkframework/Test6.java @@ -0,0 +1,26 @@ +package org.linaro.iasenov.benchmarkframework; + +/** + * Created by iasenov on 8/26/16. + */ +public class Test6 extends BaseBenchmark{ + + public String startBenchmark(int count) + { + version = " Dhrystone 2.1 "; + benchmarkName = "Test6"; + + clear(); + + startTest = System.currentTimeMillis(); + + String param = "N"; + + xout[2] = copyAssetsExecFileAndRun("dhry", param); + + endTest = System.currentTimeMillis(); + + return benchmarkName + ":" + getBenchmarkResult(5); + } + +} diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libcbench.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libcbench.so Binary files differnew file mode 100755 index 0000000..e9e8347 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libcbench.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libdhry.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libdhry.so Binary files differnew file mode 100755 index 0000000..1dce0e4 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libdhry.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libharness.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libharness.so Binary files differnew file mode 100755 index 0000000..03bc8e1 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libharness.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libmemspeedlib.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libmemspeedlib.so Binary files differnew file mode 100755 index 0000000..308c1b8 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libmemspeedlib.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/librandmemlib.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/librandmemlib.so Binary files differnew file mode 100755 index 0000000..7faabf1 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/librandmemlib.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libstringbench.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libstringbench.so Binary files differnew file mode 100755 index 0000000..19d18ce --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi-v7a/libstringbench.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi/libcbench.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi/libcbench.so Binary files differnew file mode 100755 index 0000000..d7ca86c --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi/libcbench.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi/libmemspeedlib.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi/libmemspeedlib.so Binary files differnew file mode 100755 index 0000000..1bbe7b2 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi/libmemspeedlib.so diff --git a/BenchmarkFramework/app/src/main/jniLibs/armeabi/librandmemlib.so b/BenchmarkFramework/app/src/main/jniLibs/armeabi/librandmemlib.so Binary files differnew file mode 100755 index 0000000..f6c9699 --- /dev/null +++ b/BenchmarkFramework/app/src/main/jniLibs/armeabi/librandmemlib.so diff --git a/BenchmarkFramework/app/src/main/res/drawable/information.png b/BenchmarkFramework/app/src/main/res/drawable/information.png Binary files differnew file mode 100644 index 0000000..f0e1142 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/drawable/information.png diff --git a/BenchmarkFramework/app/src/main/res/layout/activity_main.xml b/BenchmarkFramework/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..95a5db0 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="utf-8"?> + +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:id="@+id/linearLayout1" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:background="#9ad6d0"> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true" + android:background="#eb7b68"> + + + <Button + android:id="@+id/startButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Run Test"></Button> + <Button + android:id="@+id/startAutoButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Run Auto"></Button> + + <Button + android:id="@+id/saveButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Save"></Button> + + <Button + android:id="@+id/infoButton" + android:layout_width="50dp" + android:layout_height="40dp" + android:background="@drawable/information"></Button> + </LinearLayout> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content"> + <TextView + android:id="@+id/displayDetails" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:layout_marginTop="50dp" + android:text="Result ..." + android:typeface="monospace" + android:maxLines = "20" + android:scrollbars = "vertical" + android:textStyle="bold" > + </TextView> + </LinearLayout> + + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerHorizontal="true"> + + <ListView + android:id="@+id/tests_list_view" + android:layout_marginTop="300dp" + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:background="#fff8ce"></ListView> + + + </LinearLayout> + + + + + + +</RelativeLayout>
\ No newline at end of file diff --git a/BenchmarkFramework/app/src/main/res/layout/content_main.xml b/BenchmarkFramework/app/src/main/res/layout/content_main.xml new file mode 100644 index 0000000..c795559 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/layout/content_main.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" + android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" + android:paddingRight="@dimen/activity_horizontal_margin" + android:paddingTop="@dimen/activity_vertical_margin" + android:paddingBottom="@dimen/activity_vertical_margin" + app:layout_behavior="@string/appbar_scrolling_view_behavior" + tools:showIn="@layout/activity_main" tools:context=".MainActivity"> + + <TextView android:text="Hello World!" android:layout_width="wrap_content" + android:layout_height="wrap_content" /> +</RelativeLayout> diff --git a/BenchmarkFramework/app/src/main/res/menu/menu_main.xml b/BenchmarkFramework/app/src/main/res/menu/menu_main.xml new file mode 100644 index 0000000..b1cb908 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/menu/menu_main.xml @@ -0,0 +1,6 @@ +<menu xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> + <item android:id="@+id/action_settings" android:title="@string/action_settings" + android:orderInCategory="100" app:showAsAction="never" /> +</menu> diff --git a/BenchmarkFramework/app/src/main/res/mipmap-hdpi/ic_launcher.png b/BenchmarkFramework/app/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..cde69bc --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/BenchmarkFramework/app/src/main/res/mipmap-mdpi/ic_launcher.png b/BenchmarkFramework/app/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..c133a0c --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/BenchmarkFramework/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/BenchmarkFramework/app/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..bfa42f0 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/BenchmarkFramework/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/BenchmarkFramework/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..324e72c --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/BenchmarkFramework/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/BenchmarkFramework/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differnew file mode 100644 index 0000000..aee44e1 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/BenchmarkFramework/app/src/main/res/values-v21/styles.xml b/BenchmarkFramework/app/src/main/res/values-v21/styles.xml new file mode 100644 index 0000000..65d0c39 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values-v21/styles.xml @@ -0,0 +1,8 @@ +<resources>> + <style name="AppTheme.NoActionBar"> + <item name="windowActionBar">false</item> + <item name="windowNoTitle">true</item> + <item name="android:windowDrawsSystemBarBackgrounds">true</item> + <item name="android:statusBarColor">@android:color/transparent</item> + </style> +</resources> diff --git a/BenchmarkFramework/app/src/main/res/values-w820dp/dimens.xml b/BenchmarkFramework/app/src/main/res/values-w820dp/dimens.xml new file mode 100644 index 0000000..63fc816 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values-w820dp/dimens.xml @@ -0,0 +1,6 @@ +<resources> + <!-- Example customization of dimensions originally defined in res/values/dimens.xml + (such as screen margins) for screens with more than 820dp of available width. This + would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> + <dimen name="activity_horizontal_margin">64dp</dimen> +</resources> diff --git a/BenchmarkFramework/app/src/main/res/values/colors.xml b/BenchmarkFramework/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..3ab3e9c --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="colorPrimary">#3F51B5</color> + <color name="colorPrimaryDark">#303F9F</color> + <color name="colorAccent">#FF4081</color> +</resources> diff --git a/BenchmarkFramework/app/src/main/res/values/dimens.xml b/BenchmarkFramework/app/src/main/res/values/dimens.xml new file mode 100644 index 0000000..812cb7b --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values/dimens.xml @@ -0,0 +1,6 @@ +<resources> + <!-- Default screen margins, per the Android Design guidelines. --> + <dimen name="activity_horizontal_margin">16dp</dimen> + <dimen name="activity_vertical_margin">16dp</dimen> + <dimen name="fab_margin">16dp</dimen> +</resources> diff --git a/BenchmarkFramework/app/src/main/res/values/strings.xml b/BenchmarkFramework/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..fb91db7 --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values/strings.xml @@ -0,0 +1,4 @@ +<resources> + <string name="app_name">BenchmarkFramework</string> + <string name="action_settings">Settings</string> +</resources> diff --git a/BenchmarkFramework/app/src/main/res/values/styles.xml b/BenchmarkFramework/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..44f664f --- /dev/null +++ b/BenchmarkFramework/app/src/main/res/values/styles.xml @@ -0,0 +1,17 @@ +<resources> + + <!-- Base application theme. --> + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> + <!-- Customize your theme here. --> + <item name="colorPrimary">@color/colorPrimary</item> + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> + <item name="colorAccent">@color/colorAccent</item> + </style> + <style name="AppTheme.NoActionBar"> + <item name="windowActionBar">false</item> + <item name="windowNoTitle">true</item> + </style> + <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> + <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> + +</resources> diff --git a/BenchmarkFramework/app/src/test/java/org/linaro/iasenov/benchmarkframework/ExampleUnitTest.java b/BenchmarkFramework/app/src/test/java/org/linaro/iasenov/benchmarkframework/ExampleUnitTest.java new file mode 100644 index 0000000..6b090cb --- /dev/null +++ b/BenchmarkFramework/app/src/test/java/org/linaro/iasenov/benchmarkframework/ExampleUnitTest.java @@ -0,0 +1,15 @@ +package org.linaro.iasenov.benchmarkframework; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * To work on unit tests, switch the Test Artifact in the Build Variants view. + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() throws Exception { + assertEquals(4, 2 + 2); + } +}
\ No newline at end of file diff --git a/BenchmarkFramework/build.gradle b/BenchmarkFramework/build.gradle new file mode 100644 index 0000000..be515a8 --- /dev/null +++ b/BenchmarkFramework/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + jcenter() + } + dependencies { + classpath 'com.android.tools.build:gradle:1.3.0' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + jcenter() + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/BenchmarkFramework/gradle.properties b/BenchmarkFramework/gradle.properties new file mode 100644 index 0000000..6b91dd9 --- /dev/null +++ b/BenchmarkFramework/gradle.properties @@ -0,0 +1,23 @@ +## Project-wide Gradle settings. +# +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +#Tue Aug 23 09:14:32 EEST 2016 +systemProp.http.proxyPassword= +systemProp.https.proxyPort= +systemProp.https.proxyUser= +systemProp.http.proxyHost= +systemProp.https.proxyHost= +systemProp.https.proxyPassword= +systemProp.http.proxyPort= +systemProp.http.proxyUser= diff --git a/BenchmarkFramework/gradle/wrapper/gradle-wrapper.jar b/BenchmarkFramework/gradle/wrapper/gradle-wrapper.jar Binary files differnew file mode 100644 index 0000000..8c0fb64 --- /dev/null +++ b/BenchmarkFramework/gradle/wrapper/gradle-wrapper.jar diff --git a/BenchmarkFramework/gradle/wrapper/gradle-wrapper.properties b/BenchmarkFramework/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..1c7dfdc --- /dev/null +++ b/BenchmarkFramework/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Mon Aug 22 15:46:07 EEST 2016 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip diff --git a/BenchmarkFramework/gradlew b/BenchmarkFramework/gradlew new file mode 100755 index 0000000..91a7e26 --- /dev/null +++ b/BenchmarkFramework/gradlew @@ -0,0 +1,164 @@ +#!/usr/bin/env bash + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn ( ) { + echo "$*" +} + +die ( ) { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; +esac + +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" + +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/BenchmarkFramework/gradlew.bat b/BenchmarkFramework/gradlew.bat new file mode 100644 index 0000000..aec9973 --- /dev/null +++ b/BenchmarkFramework/gradlew.bat @@ -0,0 +1,90 @@ +@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/BenchmarkFramework/settings.gradle b/BenchmarkFramework/settings.gradle new file mode 100644 index 0000000..e7b4def --- /dev/null +++ b/BenchmarkFramework/settings.gradle @@ -0,0 +1 @@ +include ':app' |