private final static String featureOptFILE = "-F=all";
private final static PrimitiveFeature power = PrimitiveFeature.POWER_ESTIMATION;
private final static String featureOptPOWER = "-E";
+ private final static PrimitiveFeature screenshot = PrimitiveFeature.SCREENSHOT;
+ private final static String featureOptSCREENSHOT = "-S";
+ private final static String period = "3";
private final static File output = new File("output.out");
private final static String outputOpt = "-o";
private final static long duration = 12345;
device,
applicationOpt, application,
outputOpt, output.getPath(),
- featureOptCPU
+ featureOptCPU,
+ featureOptSCREENSHOT, period
// TODO duration option is not supported yet
// durationOpt, Long.toString(duration)
});
assertEquals(device, result.getDevice());
assertEquals(application, result.getApplication());
assertEquals(output, result.getOutput());
- assertEquals(1, result.getFeatures().size());
+ assertEquals(2, result.getFeatures().size());
assertTrue(result.getFeatures().contains(cpu));
+ assertTrue(result.getFeatures().contains(screenshot));
+ assertTrue(result.isScreenshotPeriodSpecified());
+ assertEquals(Integer.parseInt(period), result.getScreenshotPeriod());
// TODO duration option is not supported yet
// assertEquals(duration, result.getDuration());
}
assertNull(result);
}
- /**
- * Tests for TracingArgumentsParser.toStringArray()
- */
- @Test
- public void toStringArray_OnlyDevice() {
- TracingArguments args = new TracingArguments().setDevice(device);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNull(result);
- }
-
- @Test
- public void toStringArray_OnlyDeviceAndApp() {
- TracingArguments args = new TracingArguments()
- .setDevice(device)
- .setApplication(application);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNull(result);
- }
-
- @Test
- public void toStringArray_NoFeatures() {
- TracingArguments args = new TracingArguments()
- .setDevice(device)
- .setApplication(application);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNull(result);
- }
-
- @Test
- public void toStringArray_OnlyRequired() {
- TracingArguments args = new TracingArguments()
- .setDevice(device)
- .setApplication(application)
- .addFeature(cpu);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNotNull(result);
- assertEquals(5, result.length);
- assertEquals(device, result[0]);
- }
-
- @Test
- @Ignore
- // TODO duration option is not supported yet
- public void toStringArray_InvalidDuration() {
- TracingArguments args = new TracingArguments()
- .setDevice(device)
- .setApplication(application)
- .addFeature(cpu)
- .setDuration(-10);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNull(result);
- }
-
- @Test
- public void toStringArray_AllOpts() {
- TracingArguments args = new TracingArguments()
- .setDevice(device)
- .setApplication(application)
- .addFeature(cpu)
- .setOutput(output);
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNotNull(result);
- assertEquals(7, result.length);
- }
-
- @Test
- public void toStringArray_NoOpts() {
- TracingArguments args = new TracingArguments();
- String[] result = TracingArgumentsParser.toStringArray(args);
- assertNull(result);
- }
-
- @Test
- public void toStringArray_NullArgs() {
- String[] result = TracingArgumentsParser.toStringArray(null);
- assertNull(result);
- }
-
@Test
public void parse_AllFeaturesfromGroup() throws Exception {
TracingArguments result = TracingArgumentsParser.parse(new String[] {
}
@Test
+ public void parse_screenshotsOnSceneTransition() throws Exception {
+ TracingArguments result = TracingArgumentsParser.parse(new String[] {
+ device,
+ applicationOpt, application,
+ featureOptSCREENSHOT });
+ assertNotNull(result);
+ assertTrue(result.isValid());
+ assertNull(result.getOutput());
+ assertEquals(0, result.getDuration());
+ assertTrue(result.isScreenshotPeriodSpecified());
+ assertEquals(0, result.getScreenshotPeriod());
+ assertTrue(result.getFeatures().contains(PrimitiveFeature.SCREENSHOT));
+ }
+
+ @Test
+ public void parse_screenshotsPeriodically() throws Exception {
+ TracingArguments result = TracingArgumentsParser.parse(new String[] {
+ device,
+ applicationOpt, application,
+ featureOptSCREENSHOT, period });
+ assertNotNull(result);
+ assertTrue(result.isValid());
+ assertNull(result.getOutput());
+ assertEquals(0, result.getDuration());
+ assertTrue(result.isScreenshotPeriodSpecified());
+ assertEquals(Integer.parseInt(period), result.getScreenshotPeriod());
+ assertTrue(result.getFeatures().contains(PrimitiveFeature.SCREENSHOT));
+ }
+
+ @Test
+ public void parse_screenshotsOnSceneTransition_featureBeforeApp() throws Exception {
+ TracingArguments result = TracingArgumentsParser.parse(new String[] {
+ device,
+ featureOptSCREENSHOT,
+ applicationOpt, application });
+ assertNotNull(result);
+ assertTrue(result.isValid());
+ assertNull(result.getOutput());
+ assertEquals(0, result.getDuration());
+ assertTrue(result.isScreenshotPeriodSpecified());
+ assertEquals(0, result.getScreenshotPeriod());
+ assertTrue(result.getFeatures().contains(screenshot));
+ }
+
+ @Test(expected = ParseException.class)
+ public void parse_screenshotsWrongValue() throws Exception {
+ TracingArguments result = TracingArgumentsParser.parse(new String[] {
+ device,
+ applicationOpt, application,
+ featureOptSCREENSHOT, "-"+period });
+ assertNull(result);
+ }
+
+ @Test(expected = ParseException.class)
+ public void parse_screenshotsWrongValueType() throws Exception {
+ TracingArguments result = TracingArgumentsParser.parse(new String[] {
+ device,
+ applicationOpt, application,
+ featureOptSCREENSHOT, "S" });
+ assertNull(result);
+ }
+
+ /**
+ * Tests for TracingArgumentsParser.toStringArray()
+ */
+ @Test
+ public void toStringArray_OnlyDevice() {
+ TracingArguments args = new TracingArguments().setDevice(device);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
+
+ @Test
+ public void toStringArray_OnlyDeviceAndApp() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
+
+ @Test
+ public void toStringArray_NoFeatures() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .setOutput(output);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
+
+ @Test
+ public void toStringArray_OnlyRequired() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .addFeature(cpu);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNotNull(result);
+ assertEquals(5, result.length);
+ assertEquals(device, result[0]);
+ }
+
+ @Test
+ @Ignore
+ // TODO duration option is not supported yet
+ public void toStringArray_InvalidDuration() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .addFeature(cpu)
+ .setDuration(-10);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
+
+ @Test
+ public void toStringArray_AllOpts() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .addFeature(cpu)
+ .setOutput(output)
+ .setScreenshotPeriod(0);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNotNull(result);
+ assertEquals(8, result.length);
+ }
+
+ @Test
+ public void toStringArray_NoOpts() {
+ TracingArguments args = new TracingArguments();
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
+
+ @Test
+ public void toStringArray_NullArgs() {
+ String[] result = TracingArgumentsParser.toStringArray(null);
+ assertNull(result);
+ }
+
+ @Test
public void toStringArray_TwoFeatures() {
TracingArguments args = new TracingArguments()
.setDevice(device)
assertEquals("analysis", result[6]);
assertEquals("io", result[7]);
}
+
+ @Test
+ public void toStringArray_withScreenshotsOnSceneTransition() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .setScreenshotPeriod(0);
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNotNull(result);
+ assertEquals(4, result.length);
+ assertEquals(featureOptSCREENSHOT, result[3]);
+ }
+
+ @Test
+ public void toStringArray_withScreenshotsperiodically() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .setScreenshotPeriod(Integer.parseInt(period));
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNotNull(result);
+ assertEquals(5, result.length);
+ assertEquals(featureOptSCREENSHOT, result[3]);
+ assertEquals(period, result[4]);
+ }
+
+ @Test
+ public void toStringArray_withScreenshotsperiodically_wrongPeriod() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .setScreenshotPeriod(Integer.parseInt("-" + period));
+ String[] result = TracingArgumentsParser.toStringArray(args);
+ assertNull(result);
+ }
}