From e18398a0a009cc775881956db9c7d5ed83c071b2 Mon Sep 17 00:00:00 2001
From: "p.privalov"
Date: Tue, 26 Jul 2016 16:38:16 +0300
Subject: [PATCH] SRADA-827 Added tests for screenshot feature selection from
CLI.
* Added tests for TracingArguments.isValid(..).
* Added tests for TracingArgumentsParser.parse(..).
* Added tests for TracingArguments.toStringArray(..).
* Fixed problem: fail on non numeric format of screenshot period.
Change-Id: I034e41e70496a40e14f4f34e57c3fc98971449e5
---
.../cli/tracing/TracingArguments.java | 1 +
.../cli/tracing/TracingArgumentsParser.java | 11 +-
.../cli/tracing/TracingArgumentsParserTest.java | 267 +++++++++++++++------
.../cli/tracing/TracingArgumentsTest.java | 11 +
4 files changed, 206 insertions(+), 84 deletions(-)
diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArguments.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArguments.java
index f1ad853..9bae62b 100644
--- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArguments.java
+++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArguments.java
@@ -182,6 +182,7 @@ public class TracingArguments implements Cloneable, Serializable {
public TracingArguments setScreenshotPeriod(int period) {
this.screenshotPeriod = period;
this.isScreenshotPeriodSpecified = true;
+ this.featuresSet.add(PrimitiveFeature.SCREENSHOT);
return this;
}
diff --git a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParser.java b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParser.java
index d1cdefa..5895e00 100644
--- a/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParser.java
+++ b/org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParser.java
@@ -10,7 +10,6 @@ import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
-import org.tizen.dynamicanalyzer.setting.PrimitiveFeature;
import org.tizen.dynamicanalyzer.util.Logger;
/**
@@ -117,10 +116,14 @@ public class TracingArgumentsParser {
if (period == null) {
result.setScreenshotPeriod(0);
} else {
- int periodInt = Integer.parseInt(period);
- result.setScreenshotPeriod(periodInt);
+ try{
+ int periodInt = Integer.parseInt(period);
+ result.setScreenshotPeriod(periodInt);
+ }catch(NumberFormatException nfe){
+ throw new ParseException(
+ " * Screenshot period is not numeric%n");
+ }
}
- result.addFeature(PrimitiveFeature.SCREENSHOT);
}
// Get features
diff --git a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParserTest.java b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParserTest.java
index 5b846ab..a4d2192 100644
--- a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParserTest.java
+++ b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParserTest.java
@@ -36,6 +36,9 @@ public class TracingArgumentsParserTest {
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;
@@ -55,7 +58,8 @@ public class TracingArgumentsParserTest {
device,
applicationOpt, application,
outputOpt, output.getPath(),
- featureOptCPU
+ featureOptCPU,
+ featureOptSCREENSHOT, period
// TODO duration option is not supported yet
// durationOpt, Long.toString(duration)
});
@@ -65,8 +69,11 @@ public class TracingArgumentsParserTest {
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());
}
@@ -167,84 +174,6 @@ public class TracingArgumentsParserTest {
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[] {
@@ -330,6 +259,149 @@ public class TracingArgumentsParserTest {
}
@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)
@@ -358,4 +430,39 @@ public class TracingArgumentsParserTest {
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);
+ }
}
diff --git a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsTest.java b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsTest.java
index f5271b1..cbfdb74 100644
--- a/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsTest.java
+++ b/org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsTest.java
@@ -50,6 +50,7 @@ public class TracingArgumentsTest {
public void isValid_NoFeature() {
TracingArguments args = new TracingArguments()
.setDevice(device)
+ .setOutput(output)
.setApplication(application);
assertFalse(args.isValid());
}
@@ -132,4 +133,14 @@ public class TracingArgumentsTest {
.setScreenshotPeriod(-period);
assertFalse(args.isValid());
}
+
+ @Test
+ public void isValid_withoutPeriod() {
+ TracingArguments args = new TracingArguments()
+ .setDevice(device)
+ .setApplication(application)
+ .addFeature(feature)
+ .setScreenshotPeriod(0);
+ assertTrue(args.isValid());
+ }
}
--
2.7.4