summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Chang <jeremy.chang@linaro.org>2011-05-03 03:44:01 +0800
committerJeremy Chang <jeremy.chang@linaro.org>2011-05-04 17:02:56 +0800
commit1687a71af669d7beffda340a4d77eb0658e7d1b5 (patch)
tree951adbfbc0d5ba0174827ae8a20ce3173d9786bd
parent8111402fc9f054064f6d7ea53433905aefaed988 (diff)
download0xbench-1687a71af669d7beffda340a4d77eb0658e7d1b5.tar.gz
Linaro Dashboard Bundle format supported
The .bundle file will be saved after running the benchmark Regarding to the format, refer to https://launchpad.net/linaro-python-dashboard-bundle
-rw-r--r--src/org/zeroxlab/benchmark/Benchmark.java48
-rw-r--r--src/org/zeroxlab/benchmark/Case.java39
-rw-r--r--src/org/zeroxlab/benchmark/CaseArithmetic.java12
-rw-r--r--src/org/zeroxlab/benchmark/CaseCanvas.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawArc.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawCircle.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawCircle2.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawImage.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawRect.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseDrawText.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseGC.java4
-rw-r--r--src/org/zeroxlab/benchmark/CaseGLCube.java13
-rw-r--r--src/org/zeroxlab/benchmark/CaseNeheLesson08.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseNeheLesson16.java14
-rw-r--r--src/org/zeroxlab/benchmark/CaseScimark2.java13
-rw-r--r--src/org/zeroxlab/benchmark/CaseTeapot.java14
16 files changed, 269 insertions, 0 deletions
diff --git a/src/org/zeroxlab/benchmark/Benchmark.java b/src/org/zeroxlab/benchmark/Benchmark.java
index 0af37db..5e8da6a 100644
--- a/src/org/zeroxlab/benchmark/Benchmark.java
+++ b/src/org/zeroxlab/benchmark/Benchmark.java
@@ -62,6 +62,10 @@ import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.content.res.Configuration;
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.json.JSONException;
+import java.util.UUID;
/* Construct a basic UI */
public class Benchmark extends TabActivity implements View.OnClickListener {
@@ -73,7 +77,9 @@ public class Benchmark extends TabActivity implements View.OnClickListener {
private final static String mOutputFile = "0xBenchmark";
private static String mXMLResult;
+ private static String mJSONResult;
private final static String mOutputXMLFile = "0xBenchmark.xml";
+ private final static String mOutputJSONFile = "0xBenchmark.bundle";
private Button mRun;
private Button mShow;
@@ -532,9 +538,12 @@ public class Benchmark extends TabActivity implements View.OnClickListener {
final ProgressDialog dialogGetXml = new ProgressDialog(this).show(this, "Generating XML Report", "Please wait...", true, false);
new Thread() {
public void run() {
+ mJSONResult = getJSONResult();
mXMLResult = getXMLResult();
Log.e(TAG, "XML: " + mXMLResult);
writeToSDCard(mOutputXMLFile, mXMLResult);
+ Log.e(TAG, "JSON: " + mJSONResult);
+ writeToSDCard(mOutputJSONFile, mJSONResult);
mShow.setClickable(true);
onClick(mShow);
mTouchable = true;
@@ -621,6 +630,45 @@ public class Benchmark extends TabActivity implements View.OnClickListener {
return xml;
}
+ /*
+ * Add Linaro Dashboard Bundle's JSON format support
+ * https://launchpad.net/linaro-python-dashboard-bundle/trunk
+ */
+ public String getJSONResult() {
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
+
+ JSONObject result = new JSONObject();
+ try {
+ JSONArray testRunsArray = new JSONArray();
+ JSONObject testRunsObject = new JSONObject();
+ testRunsObject.put("analyzer_assigned_date", sdf.format(date));
+ testRunsObject.put("time_check_performed", false);
+ // TODO: should be UUID version 1
+ testRunsObject.put("analyzer_assigned_uuid", UUID.randomUUID().toString());
+ testRunsObject.put("test_id", "0xbench");
+
+ JSONArray testResultsList = new JSONArray();
+ Case myCase;
+ for (int i = 0; i < mCases.size(); i++) {
+ myCase = mCases.get(i);
+ JSONArray caseResultList = myCase.getJSONBenchmark();
+ for (int j = 0; j < caseResultList.length(); j++) {
+ testResultsList.put(caseResultList.get(j));
+ }
+ }
+ testRunsObject.put("test_results", testResultsList);
+
+ testRunsArray.put(testRunsObject);
+ result.put("test_runs", testRunsArray);
+ result.put("format", "Dashboard Bundle Format 1.2");
+ }
+ catch (JSONException jsonE) {
+ jsonE.printStackTrace();
+ }
+ return result.toString();
+ }
+
public String getResult() {
String result = "";
Case mycase;
diff --git a/src/org/zeroxlab/benchmark/Case.java b/src/org/zeroxlab/benchmark/Case.java
index 53656f9..11dc19e 100644
--- a/src/org/zeroxlab/benchmark/Case.java
+++ b/src/org/zeroxlab/benchmark/Case.java
@@ -32,6 +32,9 @@ import android.view.*;
import java.nio.*;
import java.util.ArrayList;
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.json.JSONException;
public abstract class Case{
protected String TAG = "Case";
@@ -251,6 +254,18 @@ public abstract class Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ total += mResult[i];
+ }
+ return (double)total/length;
+ }
+
public String getXMLBenchmark() {
if (!couldFetchReport()) {
Log.e(TAG, "cannot fetch report: " + getTitle() + " : " + isFinish() + " : " + mInvolved);
@@ -300,5 +315,29 @@ public abstract class Case{
}
return result;
}
+
+ public JSONArray getJSONBenchmark() {
+ JSONArray scenarioResult = new JSONArray();
+ if (!couldFetchReport()) {
+ Log.e(TAG, "cannot fetch report: " + getTitle() + " : " + isFinish() + " : " + mInvolved);
+ return scenarioResult;
+ }
+ ArrayList<Scenario> scenarios = getScenarios();
+
+ try {
+ for (Scenario s: scenarios) {
+ JSONObject jsonObj = new JSONObject();
+ jsonObj.put("test_case_id", s.mName.replace(" ", ""));
+ jsonObj.put("measurement", getBenchmark(s));
+ jsonObj.put("units", s.mType);
+ jsonObj.put("result", "pass");
+ scenarioResult.put(jsonObj);
+ }
+ }
+ catch (JSONException jsonE) {
+ jsonE.printStackTrace();
+ }
+ return scenarioResult;
+ }
}
diff --git a/src/org/zeroxlab/benchmark/CaseArithmetic.java b/src/org/zeroxlab/benchmark/CaseArithmetic.java
index 3584192..dfe6d77 100644
--- a/src/org/zeroxlab/benchmark/CaseArithmetic.java
+++ b/src/org/zeroxlab/benchmark/CaseArithmetic.java
@@ -89,6 +89,18 @@ public class CaseArithmetic extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mInfo.length;
+ for (int i = 0; i < length; i++) {
+ total += mInfo[i].getDouble(TesterArithmetic.MFLOPS);
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseCanvas.java b/src/org/zeroxlab/benchmark/CaseCanvas.java
index 0958624..4ff3be8 100644
--- a/src/org/zeroxlab/benchmark/CaseCanvas.java
+++ b/src/org/zeroxlab/benchmark/CaseCanvas.java
@@ -76,6 +76,20 @@ public class CaseCanvas extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawArc.java b/src/org/zeroxlab/benchmark/CaseDrawArc.java
index 7fd1d5c..70ba225 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawArc.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawArc.java
@@ -75,6 +75,20 @@ public class CaseDrawArc extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawCircle.java b/src/org/zeroxlab/benchmark/CaseDrawCircle.java
index 1a43c9a..8e2ded4 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawCircle.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawCircle.java
@@ -75,6 +75,20 @@ public class CaseDrawCircle extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawCircle2.java b/src/org/zeroxlab/benchmark/CaseDrawCircle2.java
index 7bc5209..e805c13 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawCircle2.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawCircle2.java
@@ -75,6 +75,20 @@ public class CaseDrawCircle2 extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawImage.java b/src/org/zeroxlab/benchmark/CaseDrawImage.java
index d9ef73e..8316de9 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawImage.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawImage.java
@@ -75,6 +75,20 @@ public class CaseDrawImage extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawRect.java b/src/org/zeroxlab/benchmark/CaseDrawRect.java
index 680f8cf..6019d2d 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawRect.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawRect.java
@@ -75,6 +75,20 @@ public class CaseDrawRect extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseDrawText.java b/src/org/zeroxlab/benchmark/CaseDrawText.java
index bf85877..1dc84e9 100644
--- a/src/org/zeroxlab/benchmark/CaseDrawText.java
+++ b/src/org/zeroxlab/benchmark/CaseDrawText.java
@@ -75,6 +75,20 @@ public class CaseDrawText extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseGC.java b/src/org/zeroxlab/benchmark/CaseGC.java
index c7200e6..4de90c8 100644
--- a/src/org/zeroxlab/benchmark/CaseGC.java
+++ b/src/org/zeroxlab/benchmark/CaseGC.java
@@ -78,6 +78,10 @@ public class CaseGC extends Case{
return mStringBuf;
}
+ public double getBenchmark(Scenario s) {
+ return time;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseGLCube.java b/src/org/zeroxlab/benchmark/CaseGLCube.java
index 3ce82ed..e9ccabb 100644
--- a/src/org/zeroxlab/benchmark/CaseGLCube.java
+++ b/src/org/zeroxlab/benchmark/CaseGLCube.java
@@ -77,6 +77,19 @@ public class CaseGLCube extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
@Override
public ArrayList<Scenario> getScenarios () {
diff --git a/src/org/zeroxlab/benchmark/CaseNeheLesson08.java b/src/org/zeroxlab/benchmark/CaseNeheLesson08.java
index ca120a9..c5a21f2 100644
--- a/src/org/zeroxlab/benchmark/CaseNeheLesson08.java
+++ b/src/org/zeroxlab/benchmark/CaseNeheLesson08.java
@@ -78,6 +78,20 @@ public class CaseNeheLesson08 extends Case {
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseNeheLesson16.java b/src/org/zeroxlab/benchmark/CaseNeheLesson16.java
index f529305..caf5492 100644
--- a/src/org/zeroxlab/benchmark/CaseNeheLesson16.java
+++ b/src/org/zeroxlab/benchmark/CaseNeheLesson16.java
@@ -76,6 +76,20 @@ public class CaseNeheLesson16 extends Case {
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseScimark2.java b/src/org/zeroxlab/benchmark/CaseScimark2.java
index a9b8bf0..facf819 100644
--- a/src/org/zeroxlab/benchmark/CaseScimark2.java
+++ b/src/org/zeroxlab/benchmark/CaseScimark2.java
@@ -93,6 +93,19 @@ public class CaseScimark2 extends Case{
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mInfo.length;
+ String name = s.mName.replaceFirst("Scimark2:", "");
+ for (int i = 0; i < length; i++) {
+ total += mInfo[i].getDouble(name, 0.0);
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
diff --git a/src/org/zeroxlab/benchmark/CaseTeapot.java b/src/org/zeroxlab/benchmark/CaseTeapot.java
index be2dc26..a47a5e0 100644
--- a/src/org/zeroxlab/benchmark/CaseTeapot.java
+++ b/src/org/zeroxlab/benchmark/CaseTeapot.java
@@ -72,6 +72,20 @@ public class CaseTeapot extends Case {
return result;
}
+ /*
+ * Get Average Benchmark
+ */
+ public double getBenchmark(Scenario s) {
+ double total = 0;
+ int length = mResult.length;
+ for (int i = 0; i < length; i++) {
+ double second = (mResult[i] / 1000f);
+ double fps = (double)mCaseRound / second;
+ total += fps;
+ }
+ return total/length;
+ }
+
@Override
public ArrayList<Scenario> getScenarios () {
ArrayList<Scenario> scenarios = new ArrayList<Scenario>();