Ejemplo n.º 1
0
        public void GetLeafLinksTest()
        {
            var leafLink = new LeafLink("origin", "target");

            var mockStorage = new DataStorage()
            {
                leafLinks = { leafLink }
            };

            Controller testController = new Controller(mockStorage);

            var result = testController.GetLeafLinks().Value;

            Assert.Contains(leafLink, result);
        }
        public void ConstructSingleLeafConnections()
        {
            // TODO functionality about bidirectionality is currently not being used. Should maybe be removed.
            foreach (var server in _dataStorage.leafs)
            {
                if (server.leafs is null)
                {
                    continue;
                }
                foreach (var leaf in server.leafs)
                {
                    // TODO leafs to unknown servers are not handled
                    if (!_dataStorage.ipToServerId.ContainsKey(leaf.ip))
                    {
                        continue;
                    }
                    var targetId = _dataStorage.ipToServerId[leaf.ip];

                    var oppositeLink = _dataStorage.leafLinks.Where(l =>
                                                                    l.source == targetId &&
                                                                    l.target == server.server_id
                                                                    ).Select(l => l).FirstOrDefault();

                    var identicalLink = _dataStorage.leafLinks.Where(l =>
                                                                     l.target == targetId &&
                                                                     l.source == server.server_id
                                                                     ).Select(l => l).FirstOrDefault();

                    if (identicalLink is not null)
                    {
                        identicalLink.connections.Add(leaf); // Add leafnode to be fetched when link is clicked
                    }
                    else if (oppositeLink is null)
                    {
                        var link = new LeafLink(
                            server.server_id,
                            targetId
                            );
                        link.connections.Add(leaf);
                        _dataStorage.leafLinks.Add(link);
                    }
                    else
                    {
                        oppositeLink.connections.Add(leaf);
                    }
                }
            }
        }