@POST public Response performBatchOperations( @Context UriInfo uriInfo, @Context HttpHeaders httpHeaders, @Context HttpServletRequest req, InputStream body ) { usage.get( features ).flag( http_batch_endpoint ); if ( isStreaming( httpHeaders ) ) { return batchProcessAndStream( uriInfo, httpHeaders, req, body ); } return batchProcess( uriInfo, httpHeaders, req, body ); }
@POST @Consumes( {MediaType.APPLICATION_JSON} ) @Produces( {MediaType.APPLICATION_JSON} ) public Response executeStatementsInNewTransaction( final InputStream input, @Context final UriInfo uriInfo, @Context final HttpServletRequest request ) { usage.get( features ).flag( http_tx_endpoint ); LoginContext loginContext = AuthorizedRequestWrapper.getLoginContextFromHttpServletRequest( request ); long customTransactionTimeout = HttpHeaderUtils.getTransactionTimeout( request, log ); TransactionHandle transactionHandle = facade.newTransactionHandle( uriScheme, false, loginContext, customTransactionTimeout ); return createdResponse( transactionHandle, executeStatements( input, transactionHandle, uriInfo.getBaseUri(), request ) ); }
@Test void shouldTrackMultipleFlags() { // Given DecayingFlags.Key featureA = new DecayingFlags.Key( 1 ); DecayingFlags.Key featureB = new DecayingFlags.Key( 3 ); DecayingFlags set = new DecayingFlags( 2 ); // When set.flag( featureA ); set.flag( featureA ); set.flag( featureB ); // Then assertEquals( "5000", set.asHex() ); }
@Test void shouldIncludePopularFeatures() { // Given usageData.get( UsageDataKeys.features ).flag( bolt ); // When & Then assertEquals( "1000", collector.getUdcParams().get( UdcConstants.FEATURES ) ); }
usage.get( features ).flag( http_cypher_endpoint ); Map<String,Object> command = input.readMap( body );
@Test void toggleShouldDecay() { // Given DecayingFlags.Key featureA = new DecayingFlags.Key( 1 ); DecayingFlags.Key featureB = new DecayingFlags.Key( 3 ); DecayingFlags set = new DecayingFlags( 2 ); // And given Feature A has been used quite a bit, while // feature B is not quite as popular.. set.flag( featureA ); set.flag( featureA ); set.flag( featureB ); // When set.sweep(); // Then assertEquals( "4000", set.asHex() ); // When set.sweep(); // Then assertEquals( "0000", set.asHex() ); }
@Test void resetFlagShouldRecoverIfToggledAgain() { // Given DecayingFlags.Key featureA = new DecayingFlags.Key( 9 ); DecayingFlags set = new DecayingFlags( 2 ); set.flag( featureA ); // When set.sweep(); // Then assertEquals( "0000", set.asHex() ); // When set.flag( featureA ); // Then assertEquals( "0040", set.asHex() ); } }
@Test void shouldTrackToggle() { // Given DecayingFlags.Key myFeature = new DecayingFlags.Key( 1 ); DecayingFlags set = new DecayingFlags( 1 ); // When set.flag( myFeature ); // Then assertEquals( "4000", set.asHex() ); }
@POST public Response performBatchOperations( @Context UriInfo uriInfo, @Context HttpHeaders httpHeaders, @Context HttpServletRequest req, InputStream body ) { usage.get( features ).flag( http_batch_endpoint ); if ( isStreaming( httpHeaders ) ) { return batchProcessAndStream( uriInfo, httpHeaders, req, body ); } return batchProcess( uriInfo, httpHeaders, req, body ); }
@POST @Consumes( {MediaType.APPLICATION_JSON} ) @Produces( {MediaType.APPLICATION_JSON} ) public Response executeStatementsInNewTransaction( final InputStream input, @Context final UriInfo uriInfo, @Context final HttpServletRequest request ) { usage.get( features ).flag( http_tx_endpoint ); LoginContext loginContext = AuthorizedRequestWrapper.getLoginContextFromHttpServletRequest( request ); long customTransactionTimeout = HttpHeaderUtils.getTransactionTimeout( request, log ); TransactionHandle transactionHandle = facade.newTransactionHandle( uriScheme, false, loginContext, customTransactionTimeout ); return createdResponse( transactionHandle, executeStatements( input, transactionHandle, uriInfo.getBaseUri(), request ) ); }
usage.get( features ).flag( http_cypher_endpoint ); Map<String,Object> command = input.readMap( body );