The key for release to market has been expired. Needs new key and package name.
[0xbench:0xbench.git] / src / org / zeroxlab / byteunix / NativeCaseUbench.java
1 /*
2  * Copyright (C) 2011 Linaro Limited
3  * Copyright (C) 2010 0xlab - http://0xlab.org/
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * Authored by Joseph Chang (bizkit) <bizkit@0xlab.org>
18  */
19
20 package org.zeroxlab.byteunix;
21
22 import org.zeroxlab.zeroxbenchmark.*;
23
24 import android.util.Log;
25
26 import android.os.SystemClock;
27
28 import android.app.Activity;
29 import android.content.Context;
30 import android.content.BroadcastReceiver;
31 import android.content.Intent;
32 import android.os.Bundle;
33
34 import java.util.ArrayList;
35
36 import org.zeroxlab.byteunix.NativeTesterUbench;
37
38 public class NativeCaseUbench  extends Case {
39
40     public static String LIN_RESULT = "LIN_RESULT";
41     protected Bundle mInfo[];
42
43     public static int Repeat = 1;
44     public static int Round  = 1;
45
46     public NativeCaseUbench() {
47         super("NativeCaseUbench", "org.zeroxlab.byteunix.NativeTesterUbench", Repeat, Round);
48
49         mType = "ByteUnix";
50         String [] _tmp = {
51             "system", 
52         };
53         mTags = _tmp;
54
55         generateInfo();
56     }
57
58     public String getTitle() {
59         return "UnixBench";
60     }
61
62     public String getDescription() {
63         return "(Requires root and pre-deployed binaries) UnixBench is the original BYTE UNIX benchmark suite, updated and revised by many people over the years. Takes about 30 minutes to run.";
64     }
65
66     private void generateInfo() {
67         mInfo = new Bundle[Repeat];
68         for (int i = 0; i < mInfo.length; i++) {
69             mInfo[i] = new Bundle();
70         }
71     }
72
73     @Override
74     public void clear() {
75         super.clear();
76         generateInfo();
77     }
78
79     @Override
80     public void reset() {
81         super.reset();
82         generateInfo();
83     }
84
85     @Override
86     public String getResultOutput() {
87         if (!couldFetchReport()) {
88             return "No benchmark report";
89         }
90
91         return mInfo[0].getString(NativeTesterUbench.REPORT);
92     }
93
94     @Override
95     public ArrayList<Scenario> getScenarios () {
96         ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
97
98         Bundle bundle = mInfo[0]; // only 1 run
99         for(String command: NativeTesterUbench.COMMANDS) {
100             if(!bundle.containsKey(command+"S") || !bundle.containsKey(command+"FA"))
101                 continue;
102             String name = bundle.getString(command+"S");
103             String results = bundle.getString(command+"FA");
104             bundle.remove(command+"S");
105             bundle.remove(command+"FA");
106             if(name == null || results == null)
107                 continue;
108             ArrayList<String> _mTags = new ArrayList<String>();
109             int space = command.indexOf(" ");
110             if(space > 0)
111                 _mTags.add((String)("exe:" + command.substring(0, command.indexOf(" "))));
112             else
113                 _mTags.add((String)("exe:" + command));
114             //TODO add unit as tag
115             Log.i(TAG, "name: " + name);
116             _mTags.add("unit:" + name.substring(name.indexOf("&#040;")+6, name.indexOf("&#041;")));
117
118             String [] __mTags =  (String[])(_mTags.toArray(new String[_mTags.size()]));
119             Scenario s = new Scenario(name, mType, __mTags, true);
120             s.mStringResults = results;
121             scenarios.add(s);
122         }
123
124         return scenarios;
125     }
126
127     @Override
128     protected boolean saveResult(Intent intent, int index) {
129         Bundle info = intent.getBundleExtra(NativeTesterUbench.RESULT);
130         if (info == null) {
131             Log.i(TAG, "Cannot find LibUbenchInfo");
132             return false;
133         } else {
134             mInfo[index] = info;
135         }
136
137         return true;
138     }
139 }