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