public String getSceneName() { return _scene.getName(); }
public void serialize(Scene scene, Writer writer) throws IOException { _jsonGenerator = JSON_FACTORY.createGenerator(writer); _jsonGenerator.setPrettyPrinter(new DefaultPrettyPrinter()); _jsonGenerator.writeStartObject(); _jsonGenerator.writeStringField(SceneSerializationConstant.SCENE_TAG_NAME, scene.getName()); writeHttpExchanges(scene.getRecordedHttpExchangeList()); _jsonGenerator.writeEndObject(); _jsonGenerator.close(); }
/** * Store scene in file * */ public void writeScene(Scene scene) throws IOException { File file = new File(scene.getSceneRoot(), scene.getName()); File parent = file.getParentFile(); if (!parent.exists() && !parent.mkdirs()) { throw new IllegalStateException("Failed to create new directory: " + parent); } BufferedWriter bufferedWriter = Files.newWriter(file, Charset.forName(SceneSerializationConstant.FILE_CHARSET)); SceneSerializer sceneSerializer = new SceneSerializer(); sceneSerializer.serialize(scene, bufferedWriter); } }
/** * produces a string description for the match failure reason for a particular request * @param request incoming request that we are trying to match * @return a String describing the match failure reasons for the request */ public String getMatchFailureDescription(RecordedHttpRequest request) { List<String> failureDescriptionList = new ArrayList<>(); List<RecordedHttpExchange> exchangeList = _scene.getRecordedHttpExchangeList(); if (_scene.isSequential()) { if (_sequencePosition < exchangeList.size()) { failureDescriptionList.add(_matchRule.getMatchFailureDescriptionForRequests(request, exchangeList.get(_sequencePosition).getRecordedHttpRequest())); } else { failureDescriptionList.add("No more recorded requests in sequential scene"); } } else { for (int i = 0; i < exchangeList.size(); i++) { RecordedHttpExchange exchange = exchangeList.get(i); failureDescriptionList.add(String.format("Recorded Request %d:%n%s", i + 1, _matchRule.getMatchFailureDescriptionForRequests(request, exchange.getRecordedHttpRequest()))); } } return new StringBuilder().append("Could not find matching request in scene " + _scene.getName() + "%n") .append(String.join("%n", failureDescriptionList)) .toString(); }
@Test public void testCreateSceneNotExistInRecordMode() throws Exception { Scene result = runTestGetResult(SceneMode.RECORD, null); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertFalse(result.isReadable()); }
@Test public void testCreateSceneExistInSequentialRecordMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.SEQUENTIAL_RECORD, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertFalse(result.isReadable()); // Creating a Scene in sequential record mode should clear the list of exchanges to allow for re-recording Assert.assertEquals(result.getRecordedHttpExchangeList().size(), 0); }
@Test public void testCreateSceneExistInRecordMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.RECORD, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertFalse(result.isReadable()); Assert.assertEquals(result.getRecordedHttpExchangeList().get(0).getUpdateTime(), now); }
@Test public void testCreateSceneExistInPlaybackMode() throws Exception { Scene expectedScene = EasyMock.createStrictMock(Scene.class); List<RecordedHttpExchange> recordedHttpExchanges = new ArrayList<>(); Date now = new Date(); recordedHttpExchanges.add(new RecordedHttpExchange(null, null, now)); EasyMock.expect(expectedScene.getRecordedHttpExchangeList()).andReturn(recordedHttpExchanges); EasyMock.replay(expectedScene); Scene result = runTestGetResult(SceneMode.PLAYBACK, expectedScene); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), NAME); Assert.assertEquals(result.getSceneRoot(), ROOT); Assert.assertTrue(result.isReadable()); Assert.assertEquals(result.getRecordedHttpExchangeList().get(0).getUpdateTime(), now); }