Пример #1
0
        public void WhenExecuteGetCypherResultsFails_ShouldRaiseCompletedWithException()
        {
            // Arrange
            const string queryText  = @"return 1";
            var          parameters = new Dictionary <string, object>();

            var cypherQuery    = new CypherQuery(queryText, parameters, CypherResultMode.Set);
            var cypherApiQuery = new CypherApiQuery(cypherQuery);

            using (var testHarness = new RestTestHarness
            {
                {
                    MockRequest.PostObjectAsJson("/cypher", cypherApiQuery),
                    MockResponse.Throws()
                }
            })
            {
                var graphClient = testHarness.CreateAndConnectGraphClient();

                OperationCompletedEventArgs eventArgs = null;

                graphClient.OperationCompleted += (sender, e) => { eventArgs = e; };

                //Act
                Assert.Throws <MockResponseThrowsException>(() =>
                {
                    graphClient.ExecuteGetCypherResults <ExecuteGetCypherResultsTests.SimpleResultDto>(cypherQuery);
                }, "We should expect an exception");

                Assert.IsNotNull(eventArgs, "but we should also have received the completion event");
                Assert.IsTrue(eventArgs.HasException);
                Assert.AreEqual(typeof(MockResponseThrowsException), eventArgs.Exception.GetType());
                Assert.AreEqual(-1, eventArgs.ResourcesReturned);
            }
        }
Пример #2
0
        public void WhenExecuteCypherFails_ShouldRaiseCompletedWithException()
        {
            // Arrange
            const string queryText  = @"bad cypher";
            var          parameters = new Dictionary <string, object>();

            var cypherQuery    = new CypherQuery(queryText, parameters, CypherResultMode.Set);
            var cypherApiQuery = new CypherApiQuery(cypherQuery);

            using (var testHarness = new RestTestHarness
            {
                {
                    MockRequest.PostObjectAsJson("/cypher", cypherApiQuery),
                    MockResponse.Throws()
                }
            })
            {
                var graphClient = testHarness.CreateAndConnectGraphClient();

                OperationCompletedEventArgs eventArgs = null;

                graphClient.OperationCompleted += (sender, e) => { eventArgs = e; };

                //Act
                Assert.Throws <MockResponseThrowsException>(() => { graphClient.ExecuteCypher(cypherQuery); });

                Assert.NotNull(eventArgs);
                Assert.True(eventArgs.HasException);
                Assert.Equal(typeof(MockResponseThrowsException), eventArgs.Exception.GetType());
                Assert.Equal(-1, eventArgs.ResourcesReturned);
            }
        }
Пример #3
0
        private void ClientContext_OperationCompleted(object sender, OperationCompletedEventArgs e)
        {
            Logger.GetLog().Debug("ClientContext_OperationCompleted: " + e.Result.ToString() + ", " + e.ErrorCode.ToString());

            State.Completed(this, clientContext, peerContext, e);
            Completed(this, e);
        }
Пример #4
0
        public async Task WhenExecuteCypherFails_ShouldRaiseCompletedWithException()
        {
            // Arrange
            const string queryText  = @"bad cypher";
            var          parameters = new Dictionary <string, object>();

            var cypherQuery         = new CypherQuery(queryText, parameters, CypherResultMode.Set, "neo4j");
            var transactionApiQuery = new CypherStatementList {
                new CypherTransactionStatement(cypherQuery)
            };

            using (var testHarness = new RestTestHarness
            {
                {
                    MockRequest.PostObjectAsJson("/transaction/commit", transactionApiQuery),
                    MockResponse.Throws()
                }
            })
            {
                var graphClient = await testHarness.CreateAndConnectGraphClient();

                OperationCompletedEventArgs eventArgs = null;

                graphClient.OperationCompleted += (sender, e) => { eventArgs = e; };

                //Act
                await Assert.ThrowsAsync <MockResponseThrowsException>(async() => { await graphClient.ExecuteCypherAsync(cypherQuery); });

                Assert.NotNull(eventArgs);
                Assert.True(eventArgs.HasException);
                Assert.Equal(typeof(MockResponseThrowsException), eventArgs.Exception.GetType());
                Assert.Equal(-1, eventArgs.ResourcesReturned);
            }
        }
Пример #5
0
        public void OperationCompletedLog(object sender, OperationCompletedEventArgs eventArgs)
        {
            var message = new OperationCompletedEventMessage()
            {
                Query       = eventArgs.QueryText,
                ResultCount = eventArgs.ResourcesReturned,
                Time        = eventArgs.TimeTaken
            };

            Publish(message);
        }
Пример #6
0
 void viewModel_OperationCompleted(object sender, OperationCompletedEventArgs e)
 {
     //
     if (!e.Error)
     {
         viewModel.OperationCompleted -= new EventHandler <OperationCompletedEventArgs>(viewModel_OperationCompleted);
         if (NavigationService.CanGoBack)
         {
             NavigationService.GoBack();
         }
     }
     else
     {
         progressBar.ShowProgress(false);
     }
 }
Пример #7
0
        public void ShouldFireOnCompletedEvenWhenException()
        {
            var httpClient = Substitute.For <IHttpClient>();

            httpClient
            .SendAsync(Arg.Any <HttpRequestMessage>())
            .Throws(new NotImplementedException());

            var graphClient = new GraphClient(new Uri("http://foo/db/data"), httpClient);
            OperationCompletedEventArgs operationCompletedArgs = null;

            graphClient.OperationCompleted += (s, e) => { operationCompletedArgs = e; };

            // act
            Assert.Throws <AggregateException>(() => graphClient.ConnectAsync().Wait());

            Assert.NotNull(operationCompletedArgs);
            Assert.That(operationCompletedArgs.HasException);
            Assert.AreEqual(typeof(NotImplementedException), operationCompletedArgs.Exception.GetType());
        }
Пример #8
0
 private void OnOperationCompleted( object sender, OperationCompletedEventArgs e )
 {
     OperationCompleted?.Invoke( this, e );
 }
Пример #9
0
 private void Hide(object sender, OperationCompletedEventArgs e)
 {
     Visibility = Visibility.Collapsed;
 }
Пример #10
0
 void RepliesManager_OperationCompleted(object sender, OperationCompletedEventArgs e)
 {
     txtRepliesLoading.Visibility = Visibility.Collapsed;
     Twitter_OperationCompleted(sender, e);
 }
Пример #11
0
 static void client_OperationCompleted(object sender, OperationCompletedEventArgs e)
 {
     Logger.Log("Graph Operation Completed\n" + e.QueryText + "\nResources Returned: " + e.ResourcesReturned + "\nTime: " + e.TimeTaken.Milliseconds + "ms");
 }
Пример #12
0
        private void Loaded(OperationCompletedEventArgs<LastMessages> obj)
        {
            IsBusy = false;
            if (IsFirstLoading)
                IsFirstLoading = false;

            if (obj.Error == null)
                try
                {
                    posts = FilterPosts(obj.Result.Posts).ToObservable();
                    IsError = false;
                }
                catch (Exception exc)
                {
                    IsError = true;
                    Logger.LogError(exc, "Error during LastMessages data loading");
                }
            else
            {
                IsError = true;
                ErrorMessage = obj.Error.Message.Length > 35 ? obj.Error.Message.Remove(35) : obj.Error.Message;
                Logger.LogError(obj.Error, "Error during LastMessages data loading");
            }

            if (SelectedPost == null)
                Posts = posts; //update only when there is no selected item
        }
 private void MinusRatingActionCallback(OperationCompletedEventArgs<RatingOrKarmaChangeResult> obj)
 {
     if (obj.Error == null && obj.Result != null && (obj.Result.Error == null || !obj.Result.Error.HasError))
     {
         var post = Posts.FirstOrDefault(i => i.PostId == obj.Result.Id);
         if (post != null)
             post.IncrementRating(false);
     }
 }
Пример #14
0
        private void MediatorContext_Completed(object sender, OperationCompletedEventArgs e)
        {
            if (e.Result == Client.General.ClientConst.OperationResult.Successful)
            {
                echoElapsedCount = 0;
                retryCount       = 0;
                return;
            }

            retryCount++;

            if (e.Result == Client.General.ClientConst.OperationResult.Restartable)
            {
                if (isStopped || retryCount > 10)
                {
                    return;
                }

                Task.Run(() =>
                {
                    RequireDisconnectAllPeers(this, EventArgs.Empty);
                    RequireConnect(this, EventArgs.Empty);
                });
            }
            if (e.Result == Client.General.ClientConst.OperationResult.Retryable)
            {
                if (isStopped)
                {
                    if (retryCount > 2)
                    {
                        mediatorContext.State = new DisconnectedState();
                        return;
                    }

                    Task.Run(() =>
                    {
                        RequireDisconnect(this, EventArgs.Empty);
                    });
                    return;
                }

                if (retryCount > 10)
                {
                    return;
                }

                // isStoppedでない: ConnectかMaintain なので絞りこめる
                if (mediatorContext.State is ConnectedState)
                {
                    Task.Run(() =>
                    {
                        RequireMaintain(this, EventArgs.Empty);
                    });
                }
                if (mediatorContext.State is DisconnectedState)
                {
                    Task.Run(() =>
                    {
                        RequireConnect(this, EventArgs.Empty);
                    });
                }
            }
        }
Пример #15
0
        internal override void Completed(MediatorContext mediatorContext, IClientContext clientContext, IPeerContext peerContext, OperationCompletedEventArgs oce)
        {
            if (oce.Result == ClientConst.OperationResult.Retryable)
            {
                mediatorContext.State = new ConnectedState();
                return;
            }

            mediatorContext.State = new DisconnectedState();
        }
Пример #16
0
 protected virtual void OnOperationCompleted(OperationCompletedEventArgs e)
 {
     var handler = OperationCompleted;
     if (handler != null) handler(this, e);
 }
Пример #17
0
 void Twitter_OperationCompleted(object sender, OperationCompletedEventArgs e)
 {
     LastUpdated = DateTime.Now;
     SetLoading(false);
 }
Пример #18
0
 void FavouritesManager_OperationCompleted(object sender, OperationCompletedEventArgs e)
 {
     Twitter_OperationCompleted(sender, e);
 }
Пример #19
0
        internal override void Completed(MediatorContext mediatorContext, IClientContext clientContext, IPeerContext peerContext, OperationCompletedEventArgs oce)
        {
            ClientConst.OperationResult operationResult = oce.Result;

            if (operationResult == ClientConst.OperationResult.Successful)
            {
                Logger.GetLog().Info("接続を維持しています(接続数: " + peerContext.Connections + ")。");

                mediatorContext.State = new ConnectedState();
            }
            else if (operationResult == ClientConst.OperationResult.Restartable)
            {
                Logger.GetLog().Info("IPアドレスが変化しているため、再接続します。");

                peerContext.DisconnectAll();

                Logger.GetLog().Info("ピア接続をすべて切断しました(接続数: " + peerContext.Connections + ")");

                mediatorContext.State = new DisconnectedState();

                bool result = mediatorContext.Connect();
                if (!result)
                {
                    mediatorContext.State = new ConnectedState();
                }
            }
            else if (operationResult == ClientConst.OperationResult.Retryable)
            {
                // FIXME: 暫定。本当はすぐに再試行したい
                Logger.GetLog().Info("接続維持に失敗しました。再試行可能なエラーです。");

                mediatorContext.State = new ConnectedState();
            }
            else
            {
                throw new NotSupportedException();
            }
        }
Пример #20
0
 internal virtual void Completed(MediatorContext mediatorContext, IClientContext clientContext, IPeerContext peerContext, OperationCompletedEventArgs oce)
 {
     throw new NotImplementedException();
 }