public boolean invokeCommit(String segTarFileName) { SegmentCompletionProtocol.Response response = mock(SegmentCompletionProtocol.Response.class); when(response.isSplitCommit()).thenReturn(false); return super.commitSegment(response); }
protected boolean commitSegment(SegmentCompletionProtocol.Response response) { final String segTarFileName = _segmentBuildDescriptor.getSegmentTarFilePath(); File segTarFile = new File(segTarFileName); if (!segTarFile.exists()) { throw new RuntimeException("Segment file does not exist:" + segTarFileName); } SegmentCompletionProtocol.Response returnedResponse; if (response.isSplitCommit() && _indexLoadingConfig.isEnableSplitCommit()) { // Send segmentStart, segmentUpload, & segmentCommitEnd to the controller // if that succeeds, swap in-memory segment with the one built. returnedResponse = doSplitCommit(response); } else { // Send segmentCommit() to the controller // if that succeeds, swap in-memory segment with the one built. returnedResponse = postSegmentCommitMsg(); } if (!returnedResponse.getStatus().equals(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT_SUCCESS)) { return false; } _realtimeTableDataManager.replaceLLSegment(_segmentNameStr, _indexLoadingConfig); removeSegmentFile(); return true; }
@Test public void testIncompleteResponseParams() { // Test with reduced params SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS).withOffset(OFFSET) .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); assertEquals(response.getBuildTimeSeconds(), BUILD_TIME_MILLIS); assertEquals(response.getOffset(), OFFSET); assertNull(response.getSegmentLocation()); assertFalse(response.isSplitCommit()); assertEquals(response.getStatus(), SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); }
@Test public void testCompleteResponseParams() { // Test with all params SegmentCompletionProtocol.Response.Params params = new SegmentCompletionProtocol.Response.Params().withBuildTimeSeconds(BUILD_TIME_MILLIS).withOffset(OFFSET) .withSegmentLocation(SEGMENT_LOCATION).withSplitCommit(true) .withStatus(SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); SegmentCompletionProtocol.Response response = new SegmentCompletionProtocol.Response(params); assertEquals(response.getBuildTimeSeconds(), BUILD_TIME_MILLIS); assertEquals(response.getOffset(), OFFSET); assertEquals(response.getSegmentLocation(), SEGMENT_LOCATION); assertTrue(response.isSplitCommit()); assertEquals(response.getStatus(), SegmentCompletionProtocol.ControllerResponseStatus.COMMIT); }