package org.linaro.iasenov.benchmarkframework; import android.util.Log; import org.matthew.bork.Bork; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; import java.util.Arrays; import art_benchmarks.math.AccessNBody; /** * Created by iasenov on 10/20/16. */ public class Test30 extends BaseBenchmark{ private String TAG = "Bork"; static boolean isJavaCanceled = false; private static final String PASSWORD = "wibble is a stupid password"; //private static final byte [] TEST_DATA = // ("This is a line of text\n" + // "This is the second line of text\n" + // "Some special characters \000\0900\0420\b\t").getBytes (); private static final byte [] TEST_DATA = ("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam\n"+ "varius. Pellentesque habitant morbi tristique senectus et netus et\n"+ "malesuada fames ac turpis egestas. In enim pede, commodo at, aliquam\n"+ "nec, mattis vel, lectus. Vivamus ligula. Curabitur at orci vel eros\n"+ "luctus fermentum. Ut quis magna. Aliquam erat volutpat. In augue leo,\n"+ "eleifend vitae, convallis vitae, mattis iaculis, diam. Nunc\n"+ "elementum. Phasellus sit amet sapien. Pellentesque aliquam auctor\n"+ "nisl. Fusce dapibus pulvinar ligula. Vestibulum ornare, enim ut\n"+ "dignissim lacinia, mauris est varius nisl, non elementum arcu lacus a\n"+ "justo. Donec tristique commodo pede. Pellentesque ante felis, faucibus\n"+ "ac, vulputate sit amet, consectetuer vitae, urna. Pellentesque\n"+ "habitant morbi tristique senectus et netus et malesuada fames ac\n"+ "turpis egestas. Aenean lobortis tellus ac nibh. Praesent lorem.\n"+ "\n"+ " Curabitur libero elit, commodo eu, sollicitudin id, ultrices eget,\n"+ " mi. In viverra risus in urna. Cras sit amet lacus sodales purus\n"+ " vestibulum fringilla. Etiam lacus. Aliquam lobortis sem quis\n"+ " sapien. Cras congue justo non lacus. Phasellus interdum, dui ac\n"+ " blandit pharetra, magna diam semper justo, ut rutrum diam nibh sit\n"+ " amet sapien. Aenean semper vestibulum eros. Integer vel lectus eu\n"+ " ligula elementum aliquam. Pellentesque eu leo. Proin ac arcu. Vivamus\n"+ " elementum magna quis augue. Nulla molestie felis eu tortor. Ut\n"+ " placerat elementum sapien. Nullam bibendum euismod erat. In\n"+ " venenatis, felis cursus mollis viverra, eros ante iaculis tellus, nec\n"+ " vulputate dolor purus ac leo. Nulla facilisi. Etiam porta fringilla\n"+ " diam. Phasellus ultricies, est ut fermentum semper, leo eros\n"+ " vulputate dui, lacinia tempor quam risus id elit.\n"+ "\n"+ " Donec malesuada wisi eget dolor. Vivamus euismod. Duis sagittis pede\n"+ " ac wisi. Integer commodo. Phasellus vestibulum, orci sed molestie\n"+ " pretium, pede erat ornare justo, ut fringilla tortor dui sed\n"+ " turpis. Cras suscipit. Vivamus bibendum. Morbi mauris. Duis at ligula\n"+ " non lorem posuere interdum. Quisque suscipit euismod velit. Integer\n"+ " mollis, quam at consequat blandit, dui odio eleifend elit, convallis\n"+ " sagittis pede nulla at lacus. Pellentesque habitant morbi tristique\n"+ " senectus et netus et malesuada fames ac turpis egestas. Donec\n"+ " condimentum. Curabitur cursus quam id augue. Etiam porttitor. Lorem\n"+ " ipsum dolor sit amet, consectetuer adipiscing elit. In a lorem sed\n"+ " ipsum porta varius.\n"+ "\n"+ " Phasellus gravida arcu et magna. Nullam feugiat iaculis mi. Cras\n"+ " lectus eros, ullamcorper ac, fermentum ut, pharetra gravida,\n"+ " purus. Aliquam erat volutpat. Integer adipiscing dolor a\n"+ " tellus. Curabitur in elit. Morbi eleifend, wisi in elementum\n"+ " porttitor, massa nisl lacinia est, non vehicula magna velit in\n"+ " diam. Proin vel mauris vitae nibh semper condimentum. Morbi\n"+ " consectetuer. Duis ac turpis ut sem cursus iaculis. Phasellus luctus\n"+ " leo eu lorem. Vestibulum lectus nulla, cursus sed, pharetra vitae,\n"+ " aliquet in, metus. Donec placerat commodo lacus. Vivamus ut\n"+ " erat. Nullam ut nibh. Mauris faucibus, ipsum vel eleifend ultricies,\n"+ " pede sem ultricies wisi, vitae gravida leo urna vel lectus. Sed\n"+ " libero odio, euismod id, malesuada id, porta et, nulla. Donec luctus\n"+ " odio ut libero malesuada scelerisque. Nulla eros. Nulla facilisi.\n"+ "\n"+ " Sed viverra blandit enim. Cum sociis natoque penatibus et magnis dis\n"+ " parturient montes, nascetur ridiculus mus. Pellentesque nulla felis,\n"+ " pellentesque tincidunt, bibendum at, aliquet vitae, eros. Vivamus\n"+ " vitae leo quis est fringilla porttitor. Phasellus vulputate pede a\n"+ " lectus. Praesent interdum enim vitae tortor. Nulla nisl ipsum,\n"+ " aliquam ut, volutpat at, commodo a, velit. Nam quis lorem sed wisi\n"+ " nonummy pharetra. Curabitur imperdiet faucibus metus. Proin viverra,\n"+ " dolor id imperdiet sodales, leo lacus scelerisque justo, sed dictum\n"+ " urna tortor non quam. Suspendisse diam tortor, dapibus et,\n"+ " sollicitudin at, tincidunt ac, purus. Suspendisse neque nulla,\n"+ " sagittis ut, volutpat eu, venenatis sed, mauris. Proin mattis\n"+ " lobortis leo. Pellentesque libero.\n"+ " \n"+ " Thanks to http://www.lipsum.com/").getBytes(); public String startBenchmark(int count) { isJavaCanceled = false; version = " Bork "; benchmarkName = "Test30"; integrationType = "SL"; chartName = "Bork"; long before; long after; clear(); //****Redirect System.out and Syste.err**** PrintStream stdOut = System.out; PrintStream stdErrt = System.err; PrintStream interceptor_stdout = new Interceptor(stdOut); PrintStream interceptor_err = new Interceptor(stdErrt); System.setOut(interceptor_stdout);// just add the interceptor System.setErr(interceptor_err);// just add the interceptor //****Redirect System.out and Syste.err**** startTest = 0;//System.currentTimeMillis(); endTest = 0; if(isJavaCanceled) return ""; //before = System.currentTimeMillis(); // create plain text File plaintextFile = createFile (TEST_DATA); // encrypt Bork bork = new Bork (plaintextFile.getPath (), PASSWORD); try { before = System.currentTimeMillis(); bork.encrypt(); after = System.currentTimeMillis(); File ciphertextFile = bork.outfile; ciphertextFile.deleteOnExit(); if(!ciphertextFile.exists ()){ System.out.println("No encrypted file created"); } //assertTrue ("No encrypted file created", ciphertextFile.exists ()); byte [] contents = contents (ciphertextFile); byte [] cipherText = subarray(contents, contents.length - TEST_DATA.length, TEST_DATA.length); if(Arrays.equals(TEST_DATA, cipherText)){ System.out.println("Not encrypted!"); } //assertFalse("Not encrypted!", Arrays.equals(TEST_DATA, cipherText)); if(!plaintextFile.delete()){ System.out.println("Cannot delete plaintext"); } //assertTrue ("Cannot delete plaintext", plaintextFile.delete()); //after = System.currentTimeMillis(); System.out.println("Bork(encrypt): " + (after - before)); endTest = after - before + endTest; if(isJavaCanceled) return ""; //before = System.currentTimeMillis(); // decrypt bork = new Bork (ciphertextFile.getPath (), PASSWORD); before = System.currentTimeMillis(); bork.decrypt(); after = System.currentTimeMillis(); if(!plaintextFile.equals(bork.outfile)){ System.out.println("Not equals files"); } //assertEquals (plaintextFile, bork.outfile); if(!plaintextFile.exists()){ System.out.println("No decrypted file created: " + plaintextFile); } //assertTrue("No decrypted file created: " + plaintextFile, // plaintextFile.exists()); if(!Arrays.equals(TEST_DATA, contents(bork.outfile))){ System.out.println("Failed to decrypt back to original"); } //assertTrue("Failed to decrypt back to original", // Arrays.equals(TEST_DATA, contents(bork.outfile))); if(plaintextFile.lastModified() != ciphertextFile.lastModified()){ System.out.println("Last modified not preservedl"); } //assertEquals("Last modified not preserved", // plaintextFile.lastModified(), ciphertextFile.lastModified()); ciphertextFile.delete(); //after = System.currentTimeMillis(); System.out.println("Bork(decrypt): " + (after - before)); endTest = after - before + endTest; } catch (IOException e) { e.printStackTrace(); } xout[2] = Interceptor.outputTxt; Interceptor.clear(); //endTest = System.currentTimeMillis(); sendElapsedTimeToChart(); submitElapsedTime(endTest-startTest); return benchmarkName + ":" + getBenchmarkResult(5, integrationType); } public boolean stopBenchmark(){ isJavaCanceled = true; Log.i(TAG, "stopBenchmark: isJNICanceled"); return true; } private byte [] subarray (byte [] bytes, int start, int length) { byte [] slice = new byte [length]; System.arraycopy(bytes, start, slice, 0, length); return slice; } private static byte [] contents (File file) throws IOException { byte [] buffer = new byte [(int)file.length ()]; FileInputStream input = new FileInputStream (file); if (input.read(buffer) != buffer.length) throw new IOException ("Failed to read entire file"); input.close(); return buffer; } private static File createFile (byte [] contents) { File plaintextFile = null; try { plaintextFile = File.createTempFile("temp", "bork"); plaintextFile.deleteOnExit (); FileOutputStream output = new FileOutputStream (plaintextFile); output.write (contents); output.close (); } catch (IOException e) { e.printStackTrace(); } return plaintextFile; } }