private static void CreateClosuresForTestNodes(NtwkDBContext context, TestIDsSet idSet)
 {
     int?[] ancestors = new int?[]
     {
         null, idSet.NodesIDs[0],                    //Node1
         null, idSet.NodesIDs[0], idSet.NodesIDs[1], //Node2
         null, idSet.NodesIDs[2],                    //Node3
     };
     int[] descIndex = new int[]
     {
         0, 0, 1, 1, 1, 2, 2
     };
     int[] distance = new int[]
     {
         0, 0, 1, 1, 0, 0, 0
     };
     context.AddRange(Enumerable.Range(0, 7)
                      .Select(i => new NodeClosure
     {
         ID           = 0,
         AncestorID   = ancestors[i],
         DescendantID = idSet.NodesIDs[descIndex[i]],
         Distance     = distance[i]
     })
                      );
     context.SaveChanges();
 }
        public static (NtwkDBContext, TestIDsSet, EfDataSource) GetTestDataContext()
        {
            NtwkDBContext context    = GetEmptyContext();
            TestIDsSet    idSet      = AddTestDataSet(context);
            EfDataSource  dataSource = new EfDataSource(context);

            return(context, idSet, dataSource);
        }
        static NtwkDBContext GetEmptyContext()
        {
            var options = new DbContextOptionsBuilder <NtwkDBContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;
            var context = new NtwkDBContext(options);

            return(context);
        }
 public static void SetProfileVTagsTo2_3AndMTagsTo1(NtwkDBContext context, TestIDsSet idSet)
 {
     SetProfileSelectedTags(
         context,
         idSet,
         new[]
     {
         ProfileSelectedTagFlags.Monitor,
         ProfileSelectedTagFlags.NodesListView,
         ProfileSelectedTagFlags.NodesListView
     }
         );
 }
 private static void SetProfileSelectedTags(
     NtwkDBContext context,
     TestIDsSet idSet,
     ProfileSelectedTagFlags[] flags
     )
 {
     context.ProfilesTagSelection.RemoveRange(context.ProfilesTagSelection);
     context.ProfilesTagSelection.AddRange(Enumerable.Range(0, 3)
                                           .Select(i => new ProfileSelectedTag
     {
         ID              = 0,
         Flags           = flags[i],
         TagID           = idSet.TagsIDs[i],
         BindedProfileID = idSet.ProfileId
     })
                                           );
     context.SaveChanges();
 }
 public NtwkDBRepository(NtwkDBContext context)
 {
     db = context;
 }
        private static TestIDsSet AddTestDataSet(NtwkDBContext context)
        {
            var testProfile = new Profile
            {
                ID   = 0,
                Name = TestProfileName,
                StartMonitoringOnLaunch   = true,
                DepthMonitoring           = true,
                MonitoringStartHour       = 0,
                MonitoringSessionDuration = 24,
                MonitorInterval           = 10
            };

            context.Profiles.Add(testProfile);
            context.SaveChanges();

            // tags
            NodeTag[] testTags = Enumerable.Range(0, 3)
                                 .Select(i => new NodeTag
            {
                ID   = 0,
                Name = TagNames[i]
            }).ToArray();
            context.Tags.AddRange(testTags);
            context.SaveChanges();

            // nodes
            NtwkNode[] testNodes = new NtwkNode[3];
            {
                uint[] ips = new[]
                {
                    167837697u,
                    3232292602u,
                    167837697u
                };
                bool[] t = new[] { false, true, false };
                bool[] s = new[] { true, false, true };
                for (int i = 0; i < 3; i++)
                {
                    testNodes[i] = new NtwkNode
                    {
                        ID         = 0,
                        Parent     = null,
                        Name       = NodeNames[i],
                        ip         = ips[i],
                        OpenTelnet = t[i],
                        OpenSSH    = s[i],
                        OpenPing   = true
                    };
                }

                context.Nodes.Add(testNodes[0]);
                context.SaveChanges();
                testNodes[1].Parent = testNodes[0];
                context.Nodes.Add(testNodes[1]);
                context.Nodes.Add(testNodes[2]);
                context.SaveChanges();
            }


            CustomWebService[] testWebServices;
            {
                string[] wsStrings =
                {
                    "http://{node_ip}:8080",
                    "https://{node_ip}:{param1}"
                };
                string[] wsP1 = new[] { null, "Port" };
                testWebServices = Enumerable.Range(0, 2)
                                  .Select(i => new CustomWebService
                {
                    ID            = 0,
                    Name          = WebServicesNames[i],
                    ServiceStr    = wsStrings[i],
                    Parametr1Name = wsP1[i]
                }).ToArray();
                context.WebServices.AddRange(testWebServices);
                context.SaveChanges();
            }


            {
                //TagAttachments
                NodeTag[] t = new[]
                {
                    testTags[0], testTags[0], testTags[1], testTags[2]
                };
                NtwkNode[] n = new[]
                {
                    testNodes[0], testNodes[1], testNodes[1], testNodes[2]
                };
                context.TagAttachments.AddRange(Enumerable.Range(0, 4)
                                                .Select(i => new TagAttachment
                {
                    ID   = 0,
                    Tag  = t[i],
                    Node = n[i],
                })
                                                );
                context.SaveChanges();
            }


            {
                // WebServiceBindings
                CustomWebService[] s = new[]
                {
                    testWebServices[0], testWebServices[0],
                    testWebServices[1], testWebServices[1], testWebServices[1]
                };
                NtwkNode[] n = new[]
                {
                    testNodes[0], testNodes[1],
                    testNodes[0], testNodes[1], testNodes[2]
                };
                string[] p = new[]
                {
                    null, null,
                    "80", "55315", ""
                };
                context.WebServiceBindings.AddRange(Enumerable.Range(0, 5)
                                                    .Select(i => new CustomWsBinding
                {
                    ID      = 0,
                    Service = s[i],
                    Node    = n[i],
                    Param1  = p[i]
                })
                                                    );
                context.SaveChanges();
            }


            {
                // test monitoring session data
                MonitoringSession testSession = new MonitoringSession
                {
                    ID = 0,
                    CreatedByProfile      = testProfile,
                    ParticipatingNodesNum = 2,
                    CreationTime          = 1528359015,
                    LastPulseTime         = 1528360285,
                };
                MonitoringPulseResult[] pulses = new[]
                {
                    new MonitoringPulseResult
                    {
                        ID           = 0,
                        Responded    = 2,
                        Silent       = 0,
                        Skipped      = 0,
                        CreationTime = 1528359015
                    },
                    new MonitoringPulseResult
                    {
                        ID           = 0,
                        Responded    = 0,
                        Silent       = 1,
                        Skipped      = 1,
                        CreationTime = 1528360285
                    }
                };
                var monMessageForSecondPulse = new MonitoringMessage
                {
                    ID                    = 0,
                    MessageType           = MonitoringMessageType.DangerNoPingReturnedSkippedChildren,
                    MessageSourceNodeName = NodeNames[0],
                    NumSkippedChildren    = 0
                };
                context.MonitoringSessions.Add(testSession);
                context.MonitoringPulses.AddRange(pulses);
                context.SaveChanges();
                pulses[1] = context.MonitoringPulses
                            .Include(p => p.Messages)
                            .Single(p => p.ID == pulses[1].ID);
                testSession = context.MonitoringSessions
                              .Include(s => s.Pulses)
                              .Single(s => s.ID == testSession.ID);
                testSession.Pulses.Add(pulses[0]);
                testSession.Pulses.Add(pulses[1]);
                pulses[1].Messages.Add(monMessageForSecondPulse);
                context.SaveChanges();
            }

            TestIDsSet idsSet = new TestIDsSet
            {
                ProfileId      = testProfile.ID,
                WebServicesIDs = testWebServices.Select(s => s.ID).ToArray(),
                NodesIDs       = testNodes.Select(n => n.ID).ToArray(),
                TagsIDs        = testTags.Select(t => t.ID).ToArray(),
            };

            CreateClosuresForTestNodes(context, idsSet);
            return(idsSet);
        }