1 /* 2 * Copyright (c) 2004, RV Test Team 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are met: 7 * 8 * Redistributions of source code must retain the above copyright notice, this 9 * list of conditions and the following disclaimer. 10 * 11 * Redistributions in binary form must reproduce the above copyright notice, 12 * this list of conditions and the following disclaimer in the documentation 13 * and/or other materials provided with the distribution. 14 * 15 * Neither the name of the "RV Test Team" nor the names of its contributors may 16 * be used to endorse or promote products derived from this software without 17 * specific prior written permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 20 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 23 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 29 * THE POSSIBILITY OF SUCH DAMAGE. 30 * 31 */ 32 /* 33 * Copyright (c) 2002, Reuters 34 * All rights reserved. 35 * 36 * Redistribution and use in source and binary forms, with or without 37 * modification, are permitted provided that the following conditions are met: 38 * 39 * Redistributions of source code must retain the above copyright notice, this 40 * list of conditions and the following disclaimer. 41 * Redistributions in binary form must reproduce the above copyright notice, 42 * this list of conditions and the following disclaimer in the documentation 43 * and/or other materials provided with the distribution. 44 * Neither the name of the Reuters nor the names of its contributors may be 45 * used to endorse or promote products derived from this software without 46 * specific prior written permission. 47 * 48 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 49 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 50 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 51 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 52 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 53 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 54 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 55 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 56 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 57 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 58 * THE POSSIBILITY OF SUCH DAMAGE. 59 * 60 */ 61 package com.reuters.msgtest.fixture; 62 63 import java.util.Properties; 64 65 66 /*** 67 * "Tests need to run against the background of a known set of objects. 68 * This set of objects is called a test fixture. When you are writing 69 * tests you will often find that you spend more time writing the code 70 * to set up the fixture than you do in actually testing values." 71 * taken from <a href="http://junit.sourceforge.net/doc/cookbook/cookbook.htm">JUnit Cookbook</a> 72 * 73 * For testing of Message Oriented Middleware the fixtures are the 74 * messages that will be sent out to stimulate the system and also the 75 * expected response messages. These two types of messages are 76 * represented by the classes Stimuli and Responses. 77 * 78 * By having all fixture classes implement this interface we can 79 * reuse the fixture code made at the server unit test level with the 80 * integration and load tests. This requires having known method signatures 81 * to invoke on a Fixture class. 82 * 83 * Additional non message related properites, such as represented in 84 * a simple java.util.Properties file are a possible addition to this 85 * class. 86 * 87 * We allow for the propagation of TibrvExceptions out of the local 88 * block just to make writing the fixture easier, no try-catch blocks 89 * necessary. These are handled by the JUnit framework so they will 90 * be handled elegantly. 91 * 92 * The separation into two methods, create and get is to force you 93 * to write a fixture that does not return a new instance on each 94 * invokation. This is so the same fixture can be modified by multiple 95 * tests. 96 * 97 * @author <a href="mailto:mark.pollack@reuters.com">Mark Pollack</a> 98 * @version @VERSION@ 99 */ 100 public interface RvFixture { 101 /*** 102 * Retrieve the stimulus messages created in makeStimului. 103 * 104 * @return a Map of stimulus messages, the values are of type TibrvMsg 105 */ 106 Stimuli getStimuli(); 107 108 /*** 109 * Retrieve the response messages created in createResponses 110 * 111 * @return an object with the expected messages, the values are of 112 * type TibrvMsg. 113 */ 114 Responses getResponses(); 115 116 /*** 117 * Other data that might be used during the test and know in advance. 118 * Data that is not of the type rv message can be placed here as key 119 * value pairs. It is indended that you use string key values pairs 120 * for storage reasons but it is not required. 121 * 122 * @return a <code>Properties</code> value 123 */ 124 Properties getAdditionalData(); 125 126 /*** 127 * @return The name of this fixture 128 */ 129 String getName(); 130 }