package kg.apc.jmeter.modifiers; import kg.apc.emulators.TestJMeterUtils; import kg.apc.jmeter.RuntimeEOFException; import org.apache.jmeter.protocol.tcp.sampler.BinaryTCPClientImpl; import org.apache.jmeter.threads.JMeterContextService; import org.apache.jmeter.threads.JMeterVariables; import org.junit.*; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import static org.junit.Assert.*; public class RawRequestSourcePreProcessorTest { private String basedir; public RawRequestSourcePreProcessorTest() { String file = RawRequestSourcePreProcessorTest.class.getResource("/rawdata_broken.txt").getPath(); basedir = file.substring(0, file.lastIndexOf("/")); } @BeforeClass public static void setUpClass() throws Exception { TestJMeterUtils.createJmeterEnv(); } @AfterClass public static void tearDownClass() throws Exception { } @Before public void setUp() { JMeterContextService.getContext().setVariables(new JMeterVariables()); } @After public void tearDown() { } @Test public void testProcess_crlf_metaline() { System.out.println("crlf_metaline"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setFileName(basedir + "/rawdata_crlf_metaline.txt"); instance.setRewindOnEOF(true); for (int n = 1; n < 10; n++) { instance.process(); String result = JMeterContextService.getContext().getVariables().get(instance.getVarName()); //System.out.println(n+"["+result+"]"); assertTrue(result.length() > 0); assertTrue(!(result.startsWith("\n"))); assertTrue(!(result.startsWith("\r"))); } } /** * Test of process method, of class RawRequestSourcePreProcessor. */ @Test public void testProcess() { System.out.println("process zeroterm looped"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setFileName(basedir + "/rawdata_zeroterm_looped.txt"); instance.setRewindOnEOF(true); for (int n = 1; n < 10; n++) { instance.process(); String result = JMeterContextService.getContext().getVariables().get(instance.getVarName()); //System.out.println(n+" "+result); assertTrue(result.length() > 0); } } /** * Test of process method, of class RawRequestSourcePreProcessor. */ @Test public void testProcess_zeroterminated() { System.out.println("zeroterm"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setFileName(basedir + "/rawdata_zeroterm_looped.txt"); int n = 1; try { for (; n < 20; n++) { instance.process(); JMeterContextService.getContext().getVariables().get(instance.getVarName()); //System.out.println(n); } fail("EOF expected"); } catch (RuntimeEOFException ex) { assertEquals(6, n); } } /** * Test of process method, of class RawRequestSourcePreProcessor. */ @Test public void testProcess_nonzeroterminated() { System.out.println("nonzeroterm"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setFileName(basedir + "/rawdata_nonzeroterm.txt"); int n = 1; try { for (; n < 20; n++) { instance.process(); JMeterContextService.getContext().getVariables().get(instance.getVarName()); } fail("EOF expected"); } catch (RuntimeEOFException ex) { assertEquals(6, n); } } /** * Test of process method, of class RawRequestSourcePreProcessor. */ @Test public void testProcess_broken() { System.out.println("broken"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setFileName(basedir + "/rawdata_broken.txt"); int n = 1; try { for (; n < 20; n++) { instance.process(); JMeterContextService.getContext().getVariables().get(instance.getVarName()); } } catch (RuntimeException ex) { assertEquals(3, n); } } @Test public void testProcess_file_not_found() { System.out.println("file_not_found"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.setFileName("/nofilefortest"); instance.process(); String result = JMeterContextService.getContext().getVariables().get(instance.getVarName()); assertNull(result); } /** * Test of getVarName method, of class RawRequestSourcePreProcessor. */ @Test public void testGetVarName() { System.out.println("getVarName"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); String expResult = ""; String result = instance.getVarName(); assertEquals(expResult, result); } /** * Test of setVarName method, of class RawRequestSourcePreProcessor. */ @Test public void testSetVarName() { System.out.println("setVarName"); String name = ""; RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.setVarName(name); } /** * Test of getFileName method, of class RawRequestSourcePreProcessor. */ @Test public void testGetFileName() { System.out.println("getFileName"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); String expResult = ""; String result = instance.getFileName(); assertEquals(expResult, result); } /** * Test of setFileName method, of class RawRequestSourcePreProcessor. */ @Test public void testSetFileName() { System.out.println("setFileName"); String filename = ""; RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.setFileName(filename); } /** * Test of setRewindOnEOF method, of class RawRequestSourcePreProcessor. */ @Test public void testSetRewindOnEOF() { System.out.println("setRewindOnEOF"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.setRewindOnEOF(false); } /** * Test of getRewindOnEOF method, of class RawRequestSourcePreProcessor. */ @Test public void testGetRewindOnEOF() { System.out.println("getRewindOnEOF"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); boolean result = instance.getRewindOnEOF(); assertEquals(false, result); } @Test public void testProcess_bug2() { System.out.println("bug with binary data"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); instance.setEncodeHex(true); instance.setFileName(basedir + "/protobuf.one.ammo"); instance.setVarName("rawData"); instance.setRewindOnEOF(false); instance.process(); byte[] ar = BinaryTCPClientImpl.hexStringToByteArray(JMeterContextService.getContext().getVariables().get(instance.getVarName())); assertTrue(63 != ar[210]); assertEquals(3130, ar.length); assertEquals(12, ar[1]); } @Test public void testSerialization() throws IOException { RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(instance); } /** * Test of isHexEncode method, of class RawRequestSourcePreProcessor. */ @Test public void testIsHexEncode() { System.out.println("isHexEncode"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); boolean result = instance.isHexEncode(); assertEquals(result, false); } /** * Test of setEncodeHex method, of class RawRequestSourcePreProcessor. */ @Test public void testSetEncodeHex() { System.out.println("setEncodeHex"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.setEncodeHex(false); } /** * Test of testStarted method, of class RawRequestSourcePreProcessor. */ @Test public void testTestStarted_0args() { System.out.println("testStarted"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(); } /** * Test of testStarted method, of class RawRequestSourcePreProcessor. */ @Test public void testTestStarted_String() { System.out.println("testStarted"); String host = ""; RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testStarted(host); } /** * Test of testEnded method, of class RawRequestSourcePreProcessor. */ @Test public void testTestEnded_0args() { System.out.println("testEnded"); RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testEnded(); } /** * Test of testEnded method, of class RawRequestSourcePreProcessor. */ @Test public void testTestEnded_String() { System.out.println("testEnded"); String host = ""; RawRequestSourcePreProcessor instance = new RawRequestSourcePreProcessor(); instance.testEnded(host); } }