SRADA-827 Added tests for screenshot feature selection from CLI.
authorp.privalov <p.privalov@partner.samsung.com>
Tue, 26 Jul 2016 13:38:16 +0000 (16:38 +0300)
committerMaria Guseva <m.guseva@samsung.com>
Thu, 28 Jul 2016 11:23:19 +0000 (20:23 +0900)
 * 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

org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArguments.java
org.tizen.dynamicanalyzer.cli/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParser.java
org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsParserTest.java
org.tizen.dynamicanalyzer.cli/test/src/org/tizen/dynamicanalyzer/cli/tracing/TracingArgumentsTest.java

index f1ad853..9bae62b 100644 (file)
@@ -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;
        }
 
index d1cdefa..5895e00 100644 (file)
@@ -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
index 5b846ab..a4d2192 100644 (file)
@@ -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);
+       }
 }
index f5271b1..cbfdb74 100644 (file)
@@ -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());
+       }
 }