final OperationContext operationContext = new OperationContext(); AzureStorageUtils.setProxy(operationContext, context);
public MultiLocationTestHelper(final StorageUri storageUri, final StorageLocation initialLocation, final List<RetryContext> retryContextList, final List<RetryInfo> retryInfoList) { this.initialLocation = initialLocation; this.retryContextList = retryContextList; this.retryInfoList = retryInfoList; this.operationContext = new OperationContext(); this.operationContext.getSendingRequestEventHandler().addListener(new StorageEvent<SendingRequestEvent>() { @Override public void eventOccurred(SendingRequestEvent eventArg) { if (MultiLocationTestHelper.this.error == null) { StorageLocation location = (MultiLocationTestHelper.this.requestCounter == 0) ? initialLocation : retryInfoList.get( MultiLocationTestHelper.this.requestCounter - 1).getTargetLocation(); if (!eventArg.getRequestResult().getTargetLocation().equals(location)) { MultiLocationTestHelper.this.error = String.format("Request %s was sent to %s while the location should have been %s", MultiLocationTestHelper.this.requestCounter, eventArg.getRequestResult().getTargetLocation(), location); } } MultiLocationTestHelper.this.requestCounter++; } }); this.retryPolicy = new AlwaysRetry(this.retryContextList, this.retryInfoList); }
@Test public void testAppendBlockOperations() throws Exception { CloudBlobContainer container = getTestAccount().getRealContainer(); OperationContext context = new OperationContext(); context.getResponseReceivedEventHandler().addListener( new ResponseReceivedEventHandler()); context.getSendingRequestEventHandler().addListener( new SendingRequestEventHandler()); CloudAppendBlob appendBlob = container.getAppendBlobReference( "testAppendBlockOperations"); assertNull(lastOperationTypeSent); assertNull(lastOperationTypeReceived); assertEquals(0, lastContentLengthReceived); try ( BlobOutputStream output = appendBlob.openWriteNew(null, null, context); ) { assertEquals(BlobOperationDescriptor.OperationType.CreateBlob, lastOperationTypeReceived); assertEquals(0, lastContentLengthReceived); String message = "this is a test"; output.write(message.getBytes("UTF-8")); output.flush(); assertEquals(BlobOperationDescriptor.OperationType.AppendBlock, lastOperationTypeSent); assertEquals(BlobOperationDescriptor.OperationType.AppendBlock, lastOperationTypeReceived); assertEquals(message.length(), lastContentLengthReceived); } }
@Test public void testApiVersion() throws InvalidKeyException, StorageException, URISyntaxException { SharedAccessBlobPolicy sp1 = createSharedAccessPolicy( EnumSet.of(SharedAccessBlobPermissions.READ, SharedAccessBlobPermissions.WRITE, SharedAccessBlobPermissions.LIST, SharedAccessBlobPermissions.DELETE), 3600); String sas = this.blob.generateSharedAccessSignature(sp1, null); // should not be appended before signing assertEquals(-1, sas.indexOf(Constants.QueryConstants.API_VERSION)); OperationContext ctx = new OperationContext(); ctx.getResponseReceivedEventHandler().addListener(new StorageEvent<ResponseReceivedEvent>() { @Override public void eventOccurred(ResponseReceivedEvent eventArg) { // should be appended after signing HttpURLConnection conn = (HttpURLConnection) eventArg.getConnectionObject(); assertTrue(conn.getURL().toString().indexOf(Constants.QueryConstants.API_VERSION) != -1); } }); CloudBlockBlob sasBlob = new CloudBlockBlob(new URI(this.blob.getUri().toString() + "?" + sas)); sasBlob.uploadMetadata(null, null, ctx); }
@DoesServiceRequest private boolean exists(final boolean primaryOnly, QueueRequestOptions options, OperationContext opContext) throws StorageException { if (opContext == null) { opContext = new OperationContext(); } opContext.initialize(); options = QueueRequestOptions.populateAndApplyDefaults(options, this.queueServiceClient); return ExecutionEngine.executeWithRetry(this.queueServiceClient, this, this.existsImpl(primaryOnly, options), options.getRetryPolicyFactory(), opContext); }
final ArrayList<Boolean> globalCallList = new ArrayList<Boolean>(); OperationContext eventContext = new OperationContext(); eventContext.getResponseReceivedEventHandler().addListener(new StorageEvent<ResponseReceivedEvent>() { OperationContext.getGlobalResponseReceivedEventHandler().addListener(new StorageEvent<ResponseReceivedEvent>() { eventContext.getErrorReceivingResponseEventHandler().addListener(new StorageEvent<ErrorReceivingResponseEvent>() { OperationContext.getGlobalErrorReceivingResponseEventHandler().addListener(globalResponseReceivedListener); .setGlobalResponseReceivedEventHandler(new StorageEventMultiCaster<ResponseReceivedEvent, StorageEvent<ResponseReceivedEvent>>()); eventContext .setResponseReceivedEventHandler(new StorageEventMultiCaster<ResponseReceivedEvent, StorageEvent<ResponseReceivedEvent>>()); OperationContext.getGlobalErrorReceivingResponseEventHandler().removeListener(globalResponseReceivedListener);
final ArrayList<Boolean> globalCallList = new ArrayList<Boolean>(); OperationContext eventContext = new OperationContext(); BlobRequestOptions options = new BlobRequestOptions(); options.setRetryPolicyFactory(new RetryNoRetry()); eventContext.getSendingRequestEventHandler().addListener(new StorageEvent<SendingRequestEvent>() { @Override public void eventOccurred(SendingRequestEvent eventArg) { eventContext.getErrorReceivingResponseEventHandler().addListener(new StorageEvent<ErrorReceivingResponseEvent>() { @Override public void eventOccurred(ErrorReceivingResponseEvent eventArg) { OperationContext.getGlobalErrorReceivingResponseEventHandler().addListener(new StorageEvent<ErrorReceivingResponseEvent>() { @Override public void eventOccurred(ErrorReceivingResponseEvent eventArg) { .setErrorReceivingResponseEventHandler(new StorageEventMultiCaster<ErrorReceivingResponseEvent, StorageEvent<ErrorReceivingResponseEvent>>()); try { String blockID2 = String.format("%08d", 2); .setGlobalErrorReceivingResponseEventHandler(new StorageEventMultiCaster<ErrorReceivingResponseEvent, StorageEvent<ErrorReceivingResponseEvent>>());
static void hook(OperationContext context) { context.getErrorReceivingResponseEventHandler().addListener( new ErrorReceivingResponseEventHandler()); context.getSendingRequestEventHandler().addListener( new SendingRequestEventHandler()); context.getResponseReceivedEventHandler().addListener( new ResponseReceivedEventHandler()); }
@Test public void testBlobLeaseBreak() throws StorageException, IOException, URISyntaxException { final CloudBlob blobRef = BlobTestHelper.uploadNewBlob(this.container, BlobType.BLOCK_BLOB, "test", 128, null); // Get Lease String leaseID = blobRef.acquireLease(); OperationContext operationContext = new OperationContext(); final AccessCondition leaseCondition = AccessCondition.generateLeaseCondition(leaseID); blobRef.breakLease(0, leaseCondition, null/* BlobRequestOptions */, operationContext); assertTrue(operationContext.getLastResult().getStatusCode() == HttpURLConnection.HTTP_ACCEPTED); }
OperationContext context = new OperationContext(); options.setLocationMode(LocationMode.PRIMARY_ONLY); queue.createIfNotExists(options, context); assertEquals(StorageLocation.PRIMARY, context.getRequestResults().get(0).getTargetLocation()); context = new OperationContext(); options.setLocationMode(LocationMode.PRIMARY_THEN_SECONDARY); queue.createIfNotExists(options, context); assertEquals(StorageLocation.PRIMARY, context.getRequestResults().get(0).getTargetLocation()); context = new OperationContext(); options.setLocationMode(LocationMode.SECONDARY_THEN_PRIMARY); queue.createIfNotExists(options, context); assertEquals(StorageLocation.PRIMARY, context.getRequestResults().get(0).getTargetLocation()); context = new OperationContext(); options.setLocationMode(LocationMode.SECONDARY_ONLY); try { context = new OperationContext(); options.setLocationMode(LocationMode.PRIMARY_ONLY); queue.deleteIfExists(options, context); assertEquals(StorageLocation.PRIMARY, context.getRequestResults().get(0).getTargetLocation()); context = new OperationContext(); options.setLocationMode(LocationMode.PRIMARY_THEN_SECONDARY); queue.deleteIfExists(options, context); assertEquals(StorageLocation.PRIMARY, context.getRequestResults().get(0).getTargetLocation());
CloudBlobClient blobClient = TestHelper.createCloudBlobClient(); CloudBlobContainer container = blobClient.getContainerReference("container1"); OperationContext context = new OperationContext(); userHeaders.put("x-ms-foo", "bar"); userHeaders.put("x-ms-hello", "value"); context.setUserHeaders(userHeaders); StorageEvent<SendingRequestEvent> event = new StorageEvent<SendingRequestEvent>() { context.getSendingRequestEventHandler().addListener(event); container.exists(null, null, context); context.getSendingRequestEventHandler().removeListener(event); context.setUserHeaders(userHeaders); context.getSendingRequestEventHandler().addListener(new StorageEvent<SendingRequestEvent>() {
final BlobRequestOptions options = new BlobRequestOptions(); options.setRetryPolicyFactory(new RetryNoRetry()); context.setLoggingEnabled(true); context.setLogger(LoggerFactory.getLogger(log.getName())); context.setUserHeaders(new HashMap<String, String>(Collections.singletonMap( HttpHeaders.USER_AGENT, new PreferencesUseragentProvider().get())) ); context.getSendingRequestEventHandler().addListener(listener = new StorageEvent<SendingRequestEvent>() { @Override public void eventOccurred(final SendingRequestEvent event) { context.setProxy(socksProxy); break; context.setProxy(httpProxy); break;
@Test @Category({ DevFabricTests.class, DevStoreTests.class }) public void testBlobMultiConditionHeaders() throws URISyntaxException, StorageException, IOException { final String blockBlobName = BlobTestHelper.generateRandomBlobNameWithPrefix("testBlockBlob"); final CloudBlockBlob blockBlobRef = this.container.getBlockBlobReference(blockBlobName); final int length = 2 * 1024; ByteArrayInputStream srcStream = BlobTestHelper.getRandomDataStream(length); OperationContext context = new OperationContext(); blockBlobRef.upload(srcStream, -1, null, null, context); AccessCondition condition = AccessCondition.generateIfMatchCondition(context.getLastResult().getEtag()); condition.setIfUnmodifiedSinceDate(context.getLastResult().getStartDate()); StorageEvent<SendingRequestEvent> event = new StorageEvent<SendingRequestEvent>() { @Override public void eventOccurred(SendingRequestEvent eventArg) { HttpURLConnection connection = (HttpURLConnection) eventArg.getConnectionObject(); assertNotNull(connection.getRequestProperty("If-Unmodified-Since")); assertNotNull(connection.getRequestProperty("If-Match")); } }; context.getSendingRequestEventHandler().addListener(event); blockBlobRef.upload(srcStream, -1, condition, null, context); }
public static void hook(OperationContext operationContext, float readFactor, float writeFactor) { SelfThrottlingIntercept throttler = new SelfThrottlingIntercept( operationContext, readFactor, writeFactor); ResponseReceivedListener responseListener = throttler.new ResponseReceivedListener(); SendingRequestListener sendingListener = throttler.new SendingRequestListener(); operationContext.getResponseReceivedEventHandler().addListener( responseListener); operationContext.getSendingRequestEventHandler().addListener( sendingListener); }
final ArrayList<Boolean> globalCallList = new ArrayList<Boolean>(); OperationContext eventContext = new OperationContext(); eventContext.getRequestCompletedEventHandler().addListener(new StorageEvent<RequestCompletedEvent>() { OperationContext.getGlobalRequestCompletedEventHandler().addListener(new StorageEvent<RequestCompletedEvent>() { .setGlobalRequestCompletedEventHandler(new StorageEventMultiCaster<RequestCompletedEvent, StorageEvent<RequestCompletedEvent>>()); eventContext .setRequestCompletedEventHandler(new StorageEventMultiCaster<RequestCompletedEvent, StorageEvent<RequestCompletedEvent>>());
@Override protected void logout() { context.getSendingRequestEventHandler().removeListener(listener); }
public static OperationContext getTalendOperationContext() { if (talendOperationContext == null) { String userAgentString = getUserAgentString(); talendOperationContext = new OperationContext(); HashMap<String, String> talendUserHeaders = new HashMap<>(); talendUserHeaders.put(USER_AGENT_KEY, userAgentString); talendOperationContext.setUserHeaders(talendUserHeaders); } return talendOperationContext; }
/** * Fires events representing that a request will be sent. */ private static void fireSendingRequestEvent(OperationContext opContext, HttpURLConnection request, RequestResult result) { if (opContext.getSendingRequestEventHandler().hasListeners() || OperationContext.getGlobalSendingRequestEventHandler().hasListeners()) { SendingRequestEvent event = new SendingRequestEvent(opContext, request, result); opContext.getSendingRequestEventHandler().fireEvent(event); OperationContext.getGlobalSendingRequestEventHandler().fireEvent(event); } }
/** * Fires events representing that a response has been received. */ private static void fireResponseReceivedEvent(OperationContext opContext, HttpURLConnection request, RequestResult result) { if (opContext.getResponseReceivedEventHandler().hasListeners() || OperationContext.getGlobalResponseReceivedEventHandler().hasListeners()) { ResponseReceivedEvent event = new ResponseReceivedEvent(opContext, request, result); opContext.getResponseReceivedEventHandler().fireEvent(event); OperationContext.getGlobalResponseReceivedEventHandler().fireEvent(event); } }
/** * Hooks a new listener to the given operationContext that will update the * error metrics for the WASB file system appropriately in response to * ResponseReceived events. * * @param operationContext The operationContext to hook. * @param instrumentation The metrics source to update. */ public static void hook( OperationContext operationContext, AzureFileSystemInstrumentation instrumentation) { ErrorMetricUpdater listener = new ErrorMetricUpdater(operationContext, instrumentation); operationContext.getResponseReceivedEventHandler().addListener(listener); }