Ejemplo n.º 1
0
        public async Task <ValueOrError <Relationship <Cluster, Source> > > RemoveSourceFromCluster(string cluster, string source, bool fromBackend = false)
        {
            var s = await _visibilityStore.RemoveSourceFromCluster(cluster, source, fromBackend);

            if (s.HasValue)
            {
                _clusterSourceOperations.OnNext(Delta.Create(Relationship.Create(s.Value.Primary, s.Value.Secondary), DeltaType.Removed, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 2
0
        public async Task <ValueOrError <Cluster> > AddCluster(string name, bool fromBackend = false)
        {
            var s = await _visibilityStore.AddCluster(name, fromBackend);

            if (s.HasValue)
            {
                _clusterDeltas.OnNext(Delta.Create(s.Value, DeltaType.Added, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 3
0
        public async Task <ValueOrError <Relationship <Cluster, User> > > AddUserToCluster(string cluster, string user, bool fromBackend = false)
        {
            var s = await _visibilityStore.AddUserToCluster(cluster, user, fromBackend);

            if (s.HasValue)
            {
                _clusterUserOperations.OnNext(Delta.Create(Relationship.Create(s.Value.Primary, s.Value.Secondary), DeltaType.Added, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 4
0
        public async Task <ValueOrError <bool> > RemoveUser(string name, bool fromBackend = false)
        {
            var s = await _visibilityStore.RemoveUser(name, fromBackend);

            if (s.HasValue)
            {
                _userDeltas.OnNext(Delta.Create(User.Create(name), DeltaType.Removed, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 5
0
        public async Task <ValueOrError <bool> > RemoveSource(string name, bool fromBackend = false)
        {
            var s = await _visibilityStore.RemoveSource(name, fromBackend);

            if (s.HasValue)
            {
                _sourceDeltas.OnNext(Delta.Create(Source.Create(name, string.Empty), DeltaType.Removed, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 6
0
        public async Task <ValueOrError <Source> > AddSource(string name, string description, bool fromBackend = false)
        {
            var s = await _visibilityStore.AddSource(name, description, fromBackend);

            if (s.HasValue)
            {
                _sourceDeltas.OnNext(Delta.Create(s.Value, DeltaType.Added, fromBackend));
            }

            return(s);
        }
Ejemplo n.º 7
0
        public void OneDeltaEachSourcePlusStartupRecap()
        {
            var scheduler = new TestScheduler();

            //Arrange
            var sut           = new RecapsQuery();
            var notifications = new List <NamedRecap>();

            //Act
            var user    = User.Create("u1");
            var source  = Source.Create("a1", "a1");
            var cluster = Cluster.Create("c1", new[] { user });

            var rca = Relationship.Create(cluster, source);
            var rcu = Relationship.Create(cluster, user);

            var clusterSourcesStream = scheduler.CreateColdObservable(
                Notification.CreateOnNext(Delta.Create(rca, DeltaType.Added)).RecordAt(1)
                );

            var clusterUsersStream = scheduler.CreateColdObservable(
                Notification.CreateOnNext(Delta.Create(rcu, DeltaType.Added)).RecordAt(2)
                );

            var errorsStream = scheduler.CreateColdObservable(
                Notification.CreateOnNext(new ErrorPayload(source.SourceId, new Error(), "e1", "")).RecordAt(5)
                );

            sut.Run(
                new ValueOrError <User>(user), new RunTargets
            {
                FrontendNotifier = new StubIFrontendNotifier
                {
                    RecapStringRecap = (n, r) =>
                    {
                        notifications.Add(new NamedRecap {
                            Name = n, Recap = r
                        });
                    }
                },
                ErrorsInbox = new StubIErrorsInbox
                {
                    GetErrorsStream = () => errorsStream
                },
                ErrorsBacklogReader = new StubIErrorsBacklogReader()
                {
                    GetSourcesRecapIEnumerableOfSource = apps => Task.FromResult(
                        new ValueOrError <Recap>(
                            new Recap(
                                DateTime.UtcNow,
                                Enumerable.Empty <Recap.Source>())))
                },
                VisibilityPersistor = new StubIVisibilityPersistor
                {
                    GetUserSourcesString = _ => Task.FromResult((IEnumerable <Source>) new[] { source })
                },
                VisibilityPublisher = new StubIVisibilityPublisher
                {
                    GetClusterSourcesSequence = () => clusterSourcesStream,
                    GetClusterUsersSequence   = () => clusterUsersStream
                }
            });


            //Asserts

            Assert.Equal(1, notifications.Count()); //first recap is received during the subscription

            scheduler.AdvanceBy(1);
            Assert.Equal(2, notifications.Count()); //1 for initial recap, 1 for adding app, 1 for adding user

            scheduler.AdvanceBy(1);
            Assert.Equal(3, notifications.Count()); //1 for initial recap, 1 for adding app, 1 for adding user

            scheduler.AdvanceBy(1);
        }