instrument an injected error and plot differences in output samples
authorjjenista <jjenista>
Fri, 21 Oct 2011 23:55:04 +0000 (23:55 +0000)
committerjjenista <jjenista>
Fri, 21 Oct 2011 23:55:04 +0000 (23:55 +0000)
Robust/src/Benchmarks/SSJava/MP3Decoder/Player.java
Robust/src/Benchmarks/SSJava/MP3Decoder/makefile
Robust/src/Benchmarks/SSJava/MP3Decoder/mp3samples2plotData.sh [new file with mode: 0755]
Robust/src/Benchmarks/SSJava/MP3Decoder/nve.cmds [new file with mode: 0644]
Robust/src/Benchmarks/SSJava/MP3Decoder/plot-normal-vs-error.sh [new file with mode: 0755]
Robust/src/Benchmarks/SSJava/MP3Decoder/run-error.sh [new file with mode: 0755]
Robust/src/Benchmarks/SSJava/MP3Decoder/run-normal.sh [new file with mode: 0755]

index b418fc1eedfc649b6205900a39ffad757d3f4cb2..7b2f8beb8751a813415bf3545df9e63036ec937d 100644 (file)
@@ -71,6 +71,10 @@ public class Player {
   @LOC("B")\r
   private int lastPosition = 0;\r
 \r
+\r
+  private long sampleNumber;\r
+\r
+\r
   /**\r
    * Creates a new <code>Player</code> instance.\r
    */\r
@@ -117,6 +121,9 @@ public class Player {
     @LOC("THIS,Player.ST") Header h = BitstreamWrapper.readFrame();\r
     decoder.init(h);\r
 \r
+    sampleNumber = 1;\r
+    System.out.println( "Gobble sentinel: +++" );\r
+\r
     @LOC("IN") int count = 0;\r
     SSJAVA: while (count++ < 2147483646) {\r
       if (h == null) {\r
@@ -178,6 +185,7 @@ public class Player {
     return 0;\r
   }\r
 \r
+\r
   /**\r
    * Decodes a single frame.\r
    * \r
@@ -208,9 +216,17 @@ public class Player {
         // System.out.println(outbuf[i]);\r
         sum += outbuf[i];\r
       }\r
-      System.out.println(sum);\r
+      //System.out.println(sum);\r
       //\r
 \r
+      int stride = outbuf.length / 100;\r
+      for( int i = 0; i < 100; ++i ) {\r
+        System.out.println( sampleNumber+" "+outbuf[i*stride] );\r
+        sampleNumber++;\r
+      }\r
+\r
+\r
+\r
       // synchronized (this)\r
       // {\r
       // out = audio;\r
index 503e2d119938f0c29cb7521c1f8d13d0a52ca20e..b82df16b919d8bfb4538ae313dbe846c6c797f49 100644 (file)
@@ -3,16 +3,31 @@ BUILDSCRIPT=../../../buildscript
 PROGRAM=MP3Player
 SOURCE_FILES=MP3Player.java
 
-BSFLAGS= -32bit -ssjava -mainclass $(PROGRAM)  -heapsize-mb 1000  -nooptimize -debug -garbagestats -ssjavadebug #-printlinenum #-joptimize
+SSJAVA= -ssjava -ssjavadebug
+BSFLAGS= -32bit -mainclass $(PROGRAM)  -heapsize-mb 1000  -nooptimize -debug -garbagestats #-printlinenum #-joptimize
+NORMAL= -ssjava-inject-error 0 0
+INJECT_ERROR= -ssjava-inject-error 1000 12345
+
 
 default: $(PROGRAM)s.bin
 
+normal: $(PROGRAM)n.bin
+
+error: $(PROGRAM)e.bin
+
+
 $(PROGRAM)s.bin: $(SOURCE_FILES) makefile
-       $(BUILDSCRIPT) $(BSFLAGS) -o $(PROGRAM) -builddir sing $(SOURCE_FILES) 
+       $(BUILDSCRIPT) $(SSJAVA) $(BSFLAGS) -o $(PROGRAM)s -builddir ssj $(SOURCE_FILES) 
+
+$(PROGRAM)n.bin: $(SOURCE_FILES) makefile
+       $(BUILDSCRIPT) $(NORMAL) $(BSFLAGS) -o $(PROGRAM)n -builddir norm $(SOURCE_FILES) 
+
+$(PROGRAM)e.bin: $(SOURCE_FILES) makefile
+       $(BUILDSCRIPT) $(INJECT_ERROR) $(BSFLAGS) -o $(PROGRAM)e -builddir injerr $(SOURCE_FILES) 
 
 clean:
-       rm -f  $(PROGRAM).bin
-       rm -fr sing
+       rm -f  $(PROGRAM)s.bin $(PROGRAM)n.bin $(PROGRAM)e.bin
+       rm -fr ssj norm injerr
        rm -f  *~
        rm -f  *.dot
        rm -f  *.png
diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/mp3samples2plotData.sh b/Robust/src/Benchmarks/SSJava/MP3Decoder/mp3samples2plotData.sh
new file mode 100755 (executable)
index 0000000..63d01ca
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+X=converterTempFile
+
+# first gobble up any lines of SSJAVA talk
+# then the benchmark's preamble up to the sentinel: +++
+sed -e '/^SSJAVA:/ d' -e '1,/+++/ d' $1 > $X  
+
+mv $X $1
diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/nve.cmds b/Robust/src/Benchmarks/SSJava/MP3Decoder/nve.cmds
new file mode 100644 (file)
index 0000000..3f80abe
--- /dev/null
@@ -0,0 +1 @@
+plot "normal.txt" with lines, "error.txt" with lines, "nve-diff-ranges.tmp" with steps axes x1y2
diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/plot-normal-vs-error.sh b/Robust/src/Benchmarks/SSJava/MP3Decoder/plot-normal-vs-error.sh
new file mode 100755 (executable)
index 0000000..ff58ff9
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+D=nve-diff.tmp
+diff normal.txt error.txt > $D
+
+X=nve-diff-ranges.tmp
+echo '0 1' >  $X
+echo '0 0' >> $X
+
+#diff normal.txt error.txt | \
+#sed \
+#-e '/^[^0-9]/ d' \
+#-e 's/\(.*\),\(.*\)c.*/\1 0\n\1 1\n\2 1\n\2 0/' \
+#-e 's/\(.*\)c.*/\1 0\n\1 1\n\1 1\n\1 0/' \
+#>> $X
+
+sed \
+-e '/^[^0-9]/ d' \
+-e 's/\(.*\),\(.*\)c.*/\1 0\n\1 1\n\2 1\n\2 0/' \
+-e 's/\(.*\)c.*/\1 0\n\1 1\n\1 1\n\1 0/' \
+$D >> $X
+
+if [[ -s $D ]] 
+then
+  echo 'Normal and Error files differ.'
+else
+  echo 'NO DIFF!'
+fi
+
+gnuplot -persist nve.cmds
+
+rm -f $D $X
diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/run-error.sh b/Robust/src/Benchmarks/SSJava/MP3Decoder/run-error.sh
new file mode 100755 (executable)
index 0000000..fabe0d4
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+MP3Playere.bin focus.mp3 > error.txt
+
+mp3samples2plotData.sh error.txt
\ No newline at end of file
diff --git a/Robust/src/Benchmarks/SSJava/MP3Decoder/run-normal.sh b/Robust/src/Benchmarks/SSJava/MP3Decoder/run-normal.sh
new file mode 100755 (executable)
index 0000000..9858108
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/bash
+MP3Playern.bin focus.mp3 > normal.txt
+
+mp3samples2plotData.sh normal.txt
\ No newline at end of file