You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2005/11/25 21:09:06 UTC
svn commit: r349010 -
/jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java
Author: sebb
Date: Fri Nov 25 12:08:57 2005
New Revision: 349010
URL: http://svn.apache.org/viewcvs?rev=349010&view=rev
Log:
Move more tests to test tree
Added:
jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java
Added: jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java
URL: http://svn.apache.org/viewcvs/jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java?rev=349010&view=auto
==============================================================================
--- jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java (added)
+++ jakarta/jmeter/branches/rel-2-1/test/src/org/apache/jmeter/assertions/PackageTest.java Fri Nov 25 12:08:57 2005
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.jmeter.assertions;
+
+import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.threads.JMeterContext;
+import org.apache.jmeter.threads.JMeterContextService;
+import org.apache.jmeter.threads.JMeterVariables;
+import org.apache.jorphan.logging.LoggingManager;
+import org.apache.log.Logger;
+
+import junit.framework.TestCase;
+import junit.textui.TestRunner;
+public class PackageTest extends TestCase {
+
+ public PackageTest() {
+ super();
+ }
+
+ public PackageTest(String arg0) {
+ super(arg0);
+ }
+ public void testHex() throws Exception {
+ assertEquals("00010203", MD5HexAssertion.baToHex(new byte[] { 0, 1, 2, 3 }));
+ assertEquals("03020100", MD5HexAssertion.baToHex(new byte[] { 3, 2, 1, 0 }));
+ assertEquals("0f807fff", MD5HexAssertion.baToHex(new byte[] { 0xF, -128, 127, -1 }));
+ }
+
+ public void testMD5() throws Exception {
+ assertEquals("D41D8CD98F00B204E9800998ECF8427E", MD5HexAssertion.baMD5Hex(new byte[] {}).toUpperCase());
+ }
+
+ int threadsRunning;
+
+ int failed;
+
+ public void testThreadSafety() throws Exception {
+ Thread[] threads = new Thread[100];
+ for (int i = 0; i < threads.length; i++) {
+ threads[i] = new TestThread();
+ }
+ failed = 0;
+ for (int i = 0; i < threads.length; i++) {
+ threads[i].start();
+ threadsRunning++;
+ }
+ synchronized (this) {
+ while (threadsRunning > 0) {
+ wait();
+ }
+ }
+ assertEquals(failed, 0);
+ }
+
+ class TestThread extends Thread {
+ static final String TEST_STRING = "DAbale arroz a la zorra el abad.";
+
+ // Used to be 'dábale', but caused trouble on Gump. Reasons
+ // unknown.
+ static final String TEST_PATTERN = ".*A.*\\.";
+
+ public void run() {
+ ResponseAssertion assertion = new ResponseAssertion(
+ ResponseAssertion.RESPONSE_DATA, ResponseAssertion.CONTAINS, TEST_PATTERN);
+ SampleResult response = new SampleResult();
+ response.setResponseData(TEST_STRING.getBytes());
+ for (int i = 0; i < 100; i++) {
+ AssertionResult result;
+ result = assertion.evaluateResponse(response);
+ if (result.isFailure() || result.isError()) {
+ failed++;
+ }
+ }
+ synchronized (this) {
+ threadsRunning--;
+ this.notifyAll();
+ }
+ }
+ }
+ public static class XPathAssertionTest extends TestCase {
+ private static final Logger log = LoggingManager.getLoggerForClass();
+
+ XPathAssertion assertion;
+
+ SampleResult result;
+
+ JMeterVariables vars;
+
+ JMeterContext jmctx;
+
+ public XPathAssertionTest() {
+ super();
+ }
+
+ public XPathAssertionTest(String name) {
+ super(name);
+ }
+
+ public void setUp() {
+ jmctx = JMeterContextService.getContext();
+ assertion = new XPathAssertion();
+ assertion.setThreadContext(jmctx);// This would be done by the run
+ // command
+ // assertion.setRefName("regVal");
+
+ result = new SampleResult();
+ String data = "<company-xmlext-query-ret>" + "<row>" + "<value field=\"RetCode\">LIS_OK</value>"
+ + "<value field=\"RetCodeExtension\"></value>" + "<value field=\"alias\"></value>"
+ + "<value field=\"positioncount\"></value>" + "<value field=\"invalidpincount\">0</value>"
+ + "<value field=\"pinposition1\">1</value>" + "<value field=\"pinpositionvalue1\"></value>"
+ + "<value field=\"pinposition2\">5</value>" + "<value field=\"pinpositionvalue2\"></value>"
+ + "<value field=\"pinposition3\">6</value>" + "<value field=\"pinpositionvalue3\"></value>"
+ + "</row>" + "</company-xmlext-query-ret>";
+ result.setResponseData(data.getBytes());
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ jmctx.setPreviousResult(result);
+ }
+
+ public void testAssertion() throws Exception {
+ assertion.setXPathString("//row/value[@field = 'alias']");
+ AssertionResult res = assertion.getResult(jmctx.getPreviousResult());
+ log.debug(" res " + res.isError());
+ log.debug(" failure " + res.getFailureMessage());
+ assertFalse(res.isError());
+ assertFalse(res.isFailure());
+ }
+
+ public void testNegateAssertion() throws Exception {
+ assertion.setXPathString("//row/value[@field = 'noalias']");
+ assertion.setNegated(true);
+
+ AssertionResult res = assertion.getResult(jmctx.getPreviousResult());
+ log.debug(" res " + res.isError());
+ log.debug(" failure " + res.getFailureMessage());
+ assertFalse(res.isError());
+ assertFalse(res.isFailure());
+ }
+
+ public void testValidationFailure() throws Exception {
+ assertion.setXPathString("//row/value[@field = 'alias']");
+ assertion.setNegated(false);
+ assertion.setValidating(true);
+ AssertionResult res = assertion.getResult(jmctx.getPreviousResult());
+ log.debug(res.getFailureMessage() + " error: " + res.isError() + " failure: " + res.isFailure());
+ assertTrue(res.isError());
+ assertFalse(res.isFailure());
+
+ }
+
+ public void testValidationSuccess() throws Exception {
+ String data = "<?xml version=\"1.0\"?>" + "<!DOCTYPE BOOK [" + "<!ELEMENT p (#PCDATA)>"
+ + "<!ELEMENT BOOK (OPENER,SUBTITLE?,INTRODUCTION?,(SECTION | PART)+)>"
+ + "<!ELEMENT OPENER (TITLE_TEXT)*>" + "<!ELEMENT TITLE_TEXT (#PCDATA)>"
+ + "<!ELEMENT SUBTITLE (#PCDATA)>" + "<!ELEMENT INTRODUCTION (HEADER, p+)+>"
+ + "<!ELEMENT PART (HEADER, CHAPTER+)>" + "<!ELEMENT SECTION (HEADER, p+)>"
+ + "<!ELEMENT HEADER (#PCDATA)>" + "<!ELEMENT CHAPTER (CHAPTER_NUMBER, CHAPTER_TEXT)>"
+ + "<!ELEMENT CHAPTER_NUMBER (#PCDATA)>" + "<!ELEMENT CHAPTER_TEXT (p)+>" + "]>" + "<BOOK>"
+ + "<OPENER>" + "<TITLE_TEXT>All About Me</TITLE_TEXT>" + "</OPENER>" + "<PART>"
+ + "<HEADER>Welcome To My Book</HEADER>" + "<CHAPTER>"
+ + "<CHAPTER_NUMBER>CHAPTER 1</CHAPTER_NUMBER>" + "<CHAPTER_TEXT>"
+ + "<p>Glad you want to hear about me.</p>" + "<p>There's so much to say!</p>"
+ + "<p>Where should we start?</p>" + "<p>How about more about me?</p>" + "</CHAPTER_TEXT>"
+ + "</CHAPTER>" + "</PART>" + "</BOOK>";
+
+ result.setResponseData(data.getBytes());
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ jmctx.setPreviousResult(result);
+ assertion.setXPathString("/");
+ assertion.setValidating(true);
+ AssertionResult res = assertion.getResult(result);
+ assertFalse(res.isError());
+ assertFalse(res.isFailure());
+ }
+
+ public void testValidationFailureWithDTD() throws Exception {
+ String data = "<?xml version=\"1.0\"?>" + "<!DOCTYPE BOOK [" + "<!ELEMENT p (#PCDATA)>"
+ + "<!ELEMENT BOOK (OPENER,SUBTITLE?,INTRODUCTION?,(SECTION | PART)+)>"
+ + "<!ELEMENT OPENER (TITLE_TEXT)*>" + "<!ELEMENT TITLE_TEXT (#PCDATA)>"
+ + "<!ELEMENT SUBTITLE (#PCDATA)>" + "<!ELEMENT INTRODUCTION (HEADER, p+)+>"
+ + "<!ELEMENT PART (HEADER, CHAPTER+)>" + "<!ELEMENT SECTION (HEADER, p+)>"
+ + "<!ELEMENT HEADER (#PCDATA)>" + "<!ELEMENT CHAPTER (CHAPTER_NUMBER, CHAPTER_TEXT)>"
+ + "<!ELEMENT CHAPTER_NUMBER (#PCDATA)>" + "<!ELEMENT CHAPTER_TEXT (p)+>" + "]>" + "<BOOK>"
+ + "<OPENER>" + "<TITLE_TEXT>All About Me</TITLE_TEXT>" + "</OPENER>" + "<PART>"
+ + "<HEADER>Welcome To My Book</HEADER>" + "<CHAPTER>"
+ + "<CHAPTER_NUMBER>CHAPTER 1</CHAPTER_NUMBER>" + "<CHAPTER_TEXT>"
+ + "<p>Glad you want to hear about me.</p>" + "<p>There's so much to say!</p>"
+ + "<p>Where should we start?</p>" + "<p>How about more about me?</p>" + "</CHAPTER_TEXT>"
+ + "</CHAPTER>" + "<illegal>not defined in dtd</illegal>" + "</PART>" + "</BOOK>";
+
+ result.setResponseData(data.getBytes());
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ jmctx.setPreviousResult(result);
+ assertion.setXPathString("/");
+ assertion.setValidating(true);
+ AssertionResult res = assertion.getResult(result);
+ log.debug("failureMessage: " + res.getFailureMessage());
+ assertTrue(res.isError());
+ assertFalse(res.isFailure());
+ }
+
+ public void testTolerance() throws Exception {
+ String data = "<html><head><title>testtitle</title></head>" + "<body>"
+ + "<p><i><b>invalid tag nesting</i></b><hr>" + "</body></html>";
+
+ result.setResponseData(data.getBytes());
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ jmctx.setPreviousResult(result);
+ assertion.setXPathString("/html/head/title");
+ assertion.setValidating(true);
+ assertion.setTolerant(true);
+ AssertionResult res = assertion.getResult(result);
+ log.debug("failureMessage: " + res.getFailureMessage());
+ assertFalse(res.isFailure());
+ assertFalse(res.isError());
+ }
+
+ public void testNoTolerance() throws Exception {
+ String data = "<html><head><title>testtitle</title></head>" + "<body>"
+ + "<p><i><b>invalid tag nesting</i></b><hr>" + "</body></html>";
+
+ result.setResponseData(data.getBytes());
+ vars = new JMeterVariables();
+ jmctx.setVariables(vars);
+ jmctx.setPreviousResult(result);
+ assertion.setXPathString("/html/head/title");
+ assertion.setValidating(false);
+ assertion.setTolerant(false);
+ AssertionResult res = assertion.getResult(result);
+ log.debug("failureMessage: " + res.getFailureMessage());
+ assertTrue(res.isError());
+ assertFalse(res.isFailure());
+ }
+
+ public static void main(String[] args) {
+ TestRunner.run(XPathAssertionTest.class);
+ }
+ }
+
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org