public void RetrieveDefinedFeaturesExceptionThrown() { string messageId = Guid.NewGuid().ToString(); Exception exception = m_MockRepository.StrictMock <Exception>(); RetrieveDefinedFeaturesRequest request = RetrieveDefinedFeaturesRequest.Create(messageId, FeatureScope.Create( Guid.NewGuid(), Guid.NewGuid())); IFeatureStore featureStore = new StandardFeatureStore(m_StorageContainer); using (m_MockRepository.Record()) { Expect.Call(m_StorageContainer.Retrieve(request.FeatureScope)).Throw(exception); m_MockRepository.ReplayAll(); try { featureStore.RetrieveDefinedFeatures(request); Assert.Fail("Expected FeatureCreationException"); } catch (RetrieveDefinedFeaturesException) { } m_MockRepository.VerifyAll(); } }
/// <summary> /// Retrieves the defined features. /// </summary> /// <param name = "request"><see cref = "RetrieveDefinedFeaturesRequest" /> instance containing the criteria by which the <see /// cref = "Feature" />s are selected.</param> /// <returns> /// <see cref = "RetrieveDefinedFeaturesResponse" /> instance containing the results based on the given criteria. /// </returns> public RetrieveDefinedFeaturesResponse RetrieveDefinedFeatures(RetrieveDefinedFeaturesRequest request) { RetrieveDefinedFeaturesResponse response; using (PerformanceCounterReporterFactory.CreateReporter(PerformanceCounterReporterType.RetrieveDefinedFeatures)) { IList <Feature> features; try { features = m_StorageContainer.Retrieve(request.FeatureScope); } catch (Exception) { RetrieveDefinedFeaturesException retrieveDefinedFeaturesException = new RetrieveDefinedFeaturesException( string.Format( CultureInfo.CurrentUICulture, ExceptionMessageResources.RETRIEVE_DEFINED_FEATURES_EXCEPTION, request.FeatureScope.OwnerId, request.FeatureScope.Space)); m_Logger.Error(retrieveDefinedFeaturesException); throw retrieveDefinedFeaturesException; } response = RetrieveDefinedFeaturesResponse.Create(request.Header.MessageId, features); LogInteraction(request, response); } return(response); }
public void RetrieveFeaturesForOwnerId() { string messageId = Guid.NewGuid().ToString(); Guid ownerId = Guid.NewGuid(); IList <Feature> features = new List <Feature> { Feature.Create(1, ownerId, Guid.Empty, "Feature One"), Feature.Create(1, ownerId, Guid.NewGuid(), "Feature Two"), Feature.Create(1, ownerId, Guid.NewGuid(), "Feature Three") }; IFeatureStore featureStore = new StandardFeatureStore(m_StorageContainer); FeatureScope featureScope = FeatureScope.Create(ownerId, Guid.Empty); RetrieveDefinedFeaturesRequest request = RetrieveDefinedFeaturesRequest.Create(messageId, featureScope); using (m_MockRepository.Record()) { Expect.Call(m_StorageContainer.Retrieve(featureScope)).Return(features); m_MockRepository.ReplayAll(); RetrieveDefinedFeaturesResponse response = featureStore.RetrieveDefinedFeatures(request); Assert.AreEqual(request.Header.MessageId, response.Header.MessageId); foreach (Feature feature in response.Result) { Assert.AreEqual(ownerId, feature.OwnerId); } m_MockRepository.VerifyAll(); } }
public void RetrieveDefinedFeaturesThrowsFeatureStoreFaultExceptionOnException() { IStorageContainer storageContainer = m_MockRepository.StrictMock <IStorageContainer>(); FeatureScope scope = FeatureScope.Create(Guid.NewGuid(), Guid.NewGuid()); using (m_MockRepository.Record()) { Expect.Call(storageContainer.Retrieve(scope)).Throw(new CheckFeatureStateException("Bad Mojo Exception")); m_MockRepository.ReplayAll(); FeatureStoreService featureStoreService = new FeatureStoreService(storageContainer); try { featureStoreService.RetrieveDefinedFeatures( RetrieveDefinedFeaturesRequest.Create( "UpdateFeatureStateThrowsFeatureStoreFaultExceptionOnException", scope)); Assert.Fail("Expecting FaultException<FeatureStoreFault>"); } catch (FaultException <FeatureStoreFault> e) { Console.WriteLine(e.Detail.Message); Console.WriteLine(e.Message); StringAssert.Contains(e.Detail.Message, "An exception occurred retrieving defined Features."); } m_MockRepository.VerifyAll(); } }
public void ProxyCanCallRetrieveDefinedFeaturesSynchronously() { const string messageId = "ProxyCanCallRetrieveDefinedFeaturesSynchronously"; RetrieveDefinedFeaturesRequest request = BuildRetrieveDefinedFeaturesRequestWithSavedFeature(messageId); RetrieveDefinedFeaturesResponse response = m_FeatureStoreServiceProxy.RetrieveDefinedFeatures(request); AssertRetrieveDefinedFeaturesValues(request, response); }
private static void AssertRetrieveDefinedFeaturesValues(RetrieveDefinedFeaturesRequest request, RetrieveDefinedFeaturesResponse response) { Assert.AreEqual(request.Header.MessageId, response.Header.MessageId); foreach (Feature feature in response.Result) { Assert.AreEqual(request.FeatureScope.OwnerId, feature.OwnerId); Assert.AreEqual(request.FeatureScope.Space, feature.Space); } }
public void ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithBlocking() { const string messageId = "ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithBlocking"; RetrieveDefinedFeaturesRequest request = BuildRetrieveDefinedFeaturesRequestWithSavedFeature(messageId); IAsyncResult result = m_FeatureStoreServiceProxy.BeginRetrieveDefinedFeatures(request, null, null); result.AsyncWaitHandle.WaitOne(); RetrieveDefinedFeaturesResponse response = m_FeatureStoreServiceProxy.EndRetrieveDefinedFeatures(result); AssertRetrieveDefinedFeaturesValues(request, response); }
public void ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithPolling() { const string messageId = "ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithPolling"; RetrieveDefinedFeaturesRequest request = BuildRetrieveDefinedFeaturesRequestWithSavedFeature(messageId); IAsyncResult result = m_FeatureStoreServiceProxy.BeginRetrieveDefinedFeatures(request, null, null); while (!result.IsCompleted) { } RetrieveDefinedFeaturesResponse response = m_FeatureStoreServiceProxy.EndRetrieveDefinedFeatures(result); AssertRetrieveDefinedFeaturesValues(request, response); }
public void Execute(IServiceMethodUiBridge serviceMethodUiBridge) { FeatureScope featureScope = BuildFeatureScope(serviceMethodUiBridge); try { RetrieveDefinedFeaturesRequest request = RetrieveDefinedFeaturesRequest.Create(MessageIdFactory.GenerateMessageId(), featureScope); IFeatureStoreServiceProxy featureStoreServiceProxy = new FeatureStoreServiceProxy(); RetrieveDefinedFeaturesResponse response = featureStoreServiceProxy.RetrieveDefinedFeatures(request); serviceMethodUiBridge.DisplayResults(BuildResultsRichText(request, response, GetType().Name)); } catch (Exception e) { serviceMethodUiBridge.DisplayResults(BuildExceptionRichText(e)); } }
private static RetrieveDefinedFeaturesRequest BuildRetrieveDefinedFeaturesRequestWithSavedFeature( string messageId) { Guid ownerGuid = Guid.NewGuid(); Guid space = Guid.NewGuid(); Feature[] features = new[] { Feature.Create(3, ownerGuid, space, "RetrieveDefinedFeaturesFeature3"), Feature.Create(4, ownerGuid, space, "RetrieveDefinedFeaturesFeature4"), Feature.Create(5, ownerGuid, space, "RetrieveDefinedFeaturesFeature5") }; foreach (Feature feature in features) { AddFeatureToStorage(feature.Name, feature); } return(RetrieveDefinedFeaturesRequest.Create(messageId, FeatureScope.Create(ownerGuid, space))); }
/// <summary> /// Builds the results rich text. /// </summary> /// <param name = "request">The request.</param> /// <param name = "response">The response.</param> /// <param name = "commandName"></param> /// <returns></returns> protected string BuildResultsRichText(RetrieveDefinedFeaturesRequest request, RetrieveDefinedFeaturesResponse response, string commandName) { StringBuilder builder = new StringBuilder(RtfResources.RTF_PREAMBLE); builder.AppendFormat(CultureInfo.CurrentUICulture, RtfResources.RTF_HEADER_FORMAT, commandName); builder.Append(RtfResources.REQUEST_SECTION); builder.Append(BuildMessageHeaderRichText(request.Header)); builder.Append(BuildFeatureScopeRichText(request.FeatureScope)); builder.Append(RtfResources.RESPONSE_SECTION); builder.Append(BuildMessageHeaderRichText(response.Header)); foreach (Feature feature in response.Result) { builder.Append(BuildFeatureRichText(feature)); } builder.Append(RtfResources.RTF_CLOSE); return(builder.ToString()); }
/// <summary> /// Retrieves the defined features. /// </summary> /// <param name = "request"><see cref = "RetrieveDefinedFeaturesRequest" /> instance containing the criteria by which the <see /// cref = "Feature" />s are selected.</param> /// <returns> /// <see cref = "RetrieveDefinedFeaturesResponse" /> instance containing the results based on the given criteria. /// </returns> public RetrieveDefinedFeaturesResponse RetrieveDefinedFeatures(RetrieveDefinedFeaturesRequest request) { RetrieveDefinedFeaturesResponse response; try { response = m_FeatureStoreImp.RetrieveDefinedFeatures(request); } catch (RetrieveDefinedFeaturesException e) { throw new FaultException <FeatureStoreFault>( FeatureStoreFault.Create(e.Message), new FaultReason( new FaultReasonText( e.Message, CultureInfo.CurrentCulture))); } return(response); }
public void ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithCallback() { const string messageId = "ProxyCanCallRetrieveDefinedFeaturesAsynchronouslyWithCallback"; RetrieveDefinedFeaturesRequest request = BuildRetrieveDefinedFeaturesRequestWithSavedFeature(messageId); RetrieveDefinedFeaturesResponse response = null; ManualResetEvent resetEvent = new ManualResetEvent(false); m_FeatureStoreServiceProxy.BeginRetrieveDefinedFeatures( request, r => { response = m_FeatureStoreServiceProxy.EndRetrieveDefinedFeatures(r); resetEvent.Set(); }, null); resetEvent.WaitOne(); AssertRetrieveDefinedFeaturesValues(request, response); }
public void Execute(IServiceMethodUiBridge serviceMethodUiBridge) { m_ServiceMethodUiBridge = serviceMethodUiBridge; AsyncOperation asyncOperation = AsyncOperationManager.CreateOperation(m_AsyncKey); try { FeatureScope featureScope = BuildFeatureScope(serviceMethodUiBridge); RetrieveDefinedFeaturesRequest request = RetrieveDefinedFeaturesRequest.Create(MessageIdFactory.GenerateMessageId(), featureScope); IFeatureStoreServiceProxy featureStoreServiceProxy = new FeatureStoreServiceProxy(); featureStoreServiceProxy.BeginRetrieveDefinedFeatures( request, ar => { string rtfResults; try { RetrieveDefinedFeaturesResponse response = featureStoreServiceProxy.EndRetrieveDefinedFeatures(ar); rtfResults = BuildResultsRichText(request, response, GetType().Name); } catch (Exception e) { rtfResults = BuildExceptionRichText(e); } asyncOperation.PostOperationCompleted(HandleEndAsync, rtfResults); }, null); } catch (Exception e) { serviceMethodUiBridge.DisplayResults(BuildExceptionRichText(e)); } }
/// <summary> /// Writes all the features that have been defined in the service to the Console. /// </summary> private static void DumpStoredFeatures() { IFeatureStoreServiceProxy proxy = new FeatureStoreServiceProxy(); RetrieveDefinedFeaturesResponse response = proxy.RetrieveDefinedFeatures( RetrieveDefinedFeaturesRequest.Create( "DumpStoredFeatures", FeatureScope.Create(Guid.Empty, Guid.Empty))); foreach (Feature feature in response.Result) { Console.WriteLine( string.Format( CultureInfo.CurrentUICulture, "Id [{0}], OwnerOd [{1}], Space [{2}], Name [{3}], Enabled [{4}]", feature.Id, feature.OwnerId, feature.Space, feature.Name, feature.Enabled)); } }
/// <summary> /// Thread routine that calls the various service methods thus generating the performance counter data. /// </summary> /// <param name="stopper"> /// The stopper. /// </param> private void Runner(object stopper) { ManualResetEvent stopEvent = (ManualResetEvent)stopper; IFeatureStoreServiceProxy proxy = new FeatureStoreServiceProxy(); Action <int>[] calls = new Action <int>[] { v => proxy.CreateFeature(CreateFeatureRequest.Create( "CreateFeature lambda", Feature.Create(1, Guid.NewGuid(), Guid.NewGuid(), Thread.CurrentThread.ManagedThreadId.ToString()))), v => proxy.UpdateFeatureState( UpdateFeatureStateRequest.Create( "UpdateFeatureState lambda", CreateFeatureKey(v), !m_StandardFeatures[v].Enabled)), v => proxy.CheckFeatureState( CheckFeatureStateRequest.Create( "CheckFeatureState lambda", CreateFeatureKey(v))), v => proxy.RetrieveDefinedFeatures( RetrieveDefinedFeaturesRequest.Create( "RetrieveDefinedFeatures lambda", FeatureScope.Create(m_StandardFeatures[v].OwnerId, m_StandardFeatures[v].Space))) }; while (true) { int index = m_Random.Next(0, calls.Length); Console.WriteLine(@"Invoking lambda {0}", index); calls[index].Invoke(index); if (stopEvent.WaitOne(20)) { break; } } }
/// <summary> /// Begins the retrieve defined features. /// </summary> /// <param name = "request">The request.</param> /// <param name = "callback">The callback.</param> /// <param name = "state">The state.</param> /// <returns> /// <see cref = "IAsyncResult" /> instance used to query the state of the asynchronous operation. /// </returns> public IAsyncResult BeginRetrieveDefinedFeatures( RetrieveDefinedFeaturesRequest request, AsyncCallback callback, object state) { return(Channel.BeginRetrieveDefinedFeatures(request, callback, state)); }
public void ExerciseFullInterface() { Debug.WriteLine("BEGIN: ExerciseFullInterface"); CacheSwappingStorageContainer cacheSwappingStorageContainer = new CacheSwappingStorageContainer(@".\ExerciseFullInterface_Storage.dat"); StandardFeatureStore standardFeatureStore = new StandardFeatureStore(cacheSwappingStorageContainer); /* -- CreateFeature -- */ CreateFeatureRequest createFeatureRequest1 = CreateFeatureRequest.Create( Guid.NewGuid().ToString(), Feature.Create( 1, Guid.NewGuid(), Guid.NewGuid(), "Feature One")); CreateFeatureRequest createFeatureRequest2 = CreateFeatureRequest.Create( Guid.NewGuid().ToString(), Feature.Create( 2, Guid.NewGuid(), Guid.NewGuid(), "Feature Two")); CreateFeatureRequest createFeatureRequest3 = CreateFeatureRequest.Create( Guid.NewGuid().ToString(), Feature.Create( 3, Guid.NewGuid(), Guid.NewGuid(), "Feature Three")); CreateFeatureResponse createFeatureResponse = standardFeatureStore.CreateFeature(createFeatureRequest1); AssertCreateFeatureResponse(createFeatureRequest1, createFeatureResponse); createFeatureResponse = standardFeatureStore.CreateFeature(createFeatureRequest2); AssertCreateFeatureResponse(createFeatureRequest2, createFeatureResponse); createFeatureResponse = standardFeatureStore.CreateFeature(createFeatureRequest3); AssertCreateFeatureResponse(createFeatureRequest3, createFeatureResponse); AssertPerformanceCountersRecorded(PerformanceCounterReporterType.CreateFeature, false, 3); /* -- CheckFeatureState -- */ CheckFeatureStateRequest checkFeatureStateRequest1 = CheckFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest1.Feature.Id, createFeatureRequest1.Feature.OwnerId, createFeatureRequest1.Feature.Space)); CheckFeatureStateResponse checkFeatureStateResponse = standardFeatureStore.CheckFeatureState(checkFeatureStateRequest1); AssertCheckFeatureStateResponse(checkFeatureStateRequest1, checkFeatureStateResponse); CheckFeatureStateRequest checkFeatureStateRequest2 = CheckFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest2.Feature.Id, createFeatureRequest2.Feature.OwnerId, createFeatureRequest2.Feature.Space)); checkFeatureStateResponse = standardFeatureStore.CheckFeatureState(checkFeatureStateRequest2); AssertCheckFeatureStateResponse(checkFeatureStateRequest2, checkFeatureStateResponse); CheckFeatureStateRequest checkFeatureStateRequest3 = CheckFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest3.Feature.Id, createFeatureRequest3.Feature.OwnerId, createFeatureRequest3.Feature.Space)); checkFeatureStateResponse = standardFeatureStore.CheckFeatureState(checkFeatureStateRequest3); AssertCheckFeatureStateResponse(checkFeatureStateRequest3, checkFeatureStateResponse); AssertPerformanceCountersRecorded(PerformanceCounterReporterType.CheckFeatureState, false, 3); /* -- UpdateFeatureState -- */ UpdateFeatureStateRequest updateFeatureStateRequest1 = UpdateFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest1.Feature.Id, createFeatureRequest1.Feature.OwnerId, createFeatureRequest1.Feature.Space), true); UpdateFeatureStateResponse updateFeatureStateResponse = standardFeatureStore.UpdateFeatureState(updateFeatureStateRequest1); Assert.IsTrue(updateFeatureStateResponse.Result.Enabled); UpdateFeatureStateRequest updateFeatureStateRequest2 = UpdateFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest2.Feature.Id, createFeatureRequest2.Feature.OwnerId, createFeatureRequest2.Feature.Space), true); updateFeatureStateResponse = standardFeatureStore.UpdateFeatureState(updateFeatureStateRequest2); Assert.IsTrue(updateFeatureStateResponse.Result.Enabled); UpdateFeatureStateRequest updateFeatureStateRequest3 = UpdateFeatureStateRequest.Create( Guid.NewGuid().ToString(), FeatureKey.Create( createFeatureRequest3.Feature.Id, createFeatureRequest3.Feature.OwnerId, createFeatureRequest3.Feature.Space), true); updateFeatureStateResponse = standardFeatureStore.UpdateFeatureState(updateFeatureStateRequest3); Assert.IsTrue(updateFeatureStateResponse.Result.Enabled); AssertPerformanceCountersRecorded(PerformanceCounterReporterType.UpdateFeatureState, false, 3); /* -- RetrieveDefinedFeatures -- */ RetrieveDefinedFeaturesRequest retrieveDefinedFeaturesRequest = RetrieveDefinedFeaturesRequest.Create( Guid.NewGuid().ToString(), FeatureScope.Create(createFeatureRequest1.Feature.OwnerId, createFeatureRequest1.Feature.Space)); RetrieveDefinedFeaturesResponse retrieveDefinedFeaturesResponse = standardFeatureStore.RetrieveDefinedFeatures(retrieveDefinedFeaturesRequest); Assert.IsNotNull(retrieveDefinedFeaturesResponse.Result); Assert.IsTrue(retrieveDefinedFeaturesResponse.Result.GetEnumerator().MoveNext()); AssertPerformanceCountersRecorded(PerformanceCounterReporterType.RetrieveDefinedFeatures, true, 1); Debug.WriteLine("END: ExerciseFullInterface"); }
/// <summary> /// Retrieves the defined features. /// </summary> /// <param name = "request"><see cref = "RetrieveDefinedFeaturesRequest" /> instance containing the criteria by which the <see /// cref = "Feature" />s are selected.</param> /// <returns> /// <see cref = "RetrieveDefinedFeaturesResponse" /> instance containing the results based on the given criteria. /// </returns> public RetrieveDefinedFeaturesResponse RetrieveDefinedFeatures(RetrieveDefinedFeaturesRequest request) { return(Channel.RetrieveDefinedFeatures(request)); }