diff options
author | Jeremy Chang <jeremy.chang@linaro.org> | 2011-05-03 03:44:01 +0800 |
---|---|---|
committer | Jeremy Chang <jeremy.chang@linaro.org> | 2011-05-04 17:02:56 +0800 |
commit | 1687a71af669d7beffda340a4d77eb0658e7d1b5 (patch) | |
tree | 951adbfbc0d5ba0174827ae8a20ce3173d9786bd | |
parent | 8111402fc9f054064f6d7ea53433905aefaed988 (diff) | |
download | 0xbench-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.java | 48 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/Case.java | 39 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseArithmetic.java | 12 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseCanvas.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawArc.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawCircle.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawCircle2.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawImage.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawRect.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseDrawText.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseGC.java | 4 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseGLCube.java | 13 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseNeheLesson08.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseNeheLesson16.java | 14 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseScimark2.java | 13 | ||||
-rw-r--r-- | src/org/zeroxlab/benchmark/CaseTeapot.java | 14 |
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>(); |