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();
            }
        }
Beispiel #2
0
        /// <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();
            }
        }
Beispiel #4
0
        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);
        }
Beispiel #9
0
        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());
        }
Beispiel #12
0
        /// <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));
            }
        }
Beispiel #15
0
        /// <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));
            }
        }
Beispiel #16
0
        /// <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;
                }
            }
        }
Beispiel #17
0
 /// <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");
        }
Beispiel #19
0
 /// <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));
 }