Esempio n. 1
0
 def test_query_UserSystemRole(self):
     # Put some data into the db
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         user = User(name="Fred")
         system = System(name="Fred's Computer")
         administrator = Role(name="Administrator")
         reporter = Role(name="Reporter")
         observer = Role(name="Observer")
         UserSystemRole(user=user, system=system, role=administrator)
         UserSystemRole(user=user, system=system, role=reporter)
         UserSystemRole(user=user, system=system, role=observer)
         session.add(user)
     # Query the db and make sure everything lines up
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         users = session.query(User)
         systems = session.query(System)
         self.assertEqual(len(users[0].system_roles), 3)
         self.assertEqual(len(systems[0].user_roles), 3)
         for role in users[0].system_roles:
             self.assertIn(role, systems[0].user_roles)
             self.assertIs(role.user, users[0])
         for role in systems[0].user_roles:
             self.assertIn(role, users[0].system_roles)
             self.assertIs(role.system, systems[0])
         self.assertIn(systems[0], [role.system for role in users[0].system_roles])
         self.assertIn(users[0], [role.user for role in systems[0].user_roles])
Esempio n. 2
0
    def test_prune(self):
        with get_session(bind=get_engine("sqlite:///:memory:")) as session:
            session.add(CpuPercent(core_id=0, mean=2))
            session.add(CpuPercent(core_id=0, mean=3))
            session.add(CpuPercent(core_id=1, mean=4))
            session.add(CpuPercent(core_id=1, mean=4))
            session.add(CpuPercent(core_id=1, mean=5))
        with get_session(bind=get_engine("sqlite:///:memory:")) as session:
            metrics = list(session.query(CpuPercent))

            core0, core1 = CpuPercent.prune(metrics)
            self.assertAlmostEqual(core0.mean,
                                   statistics.mean((2, 3)),
                                   places=10)
            self.assertAlmostEqual(core0.variance,
                                   statistics.pvariance((2, 3)),
                                   places=10)
            self.assertEqual(core0.sample_count, 2)
            self.assertAlmostEqual(core1.mean,
                                   statistics.mean((4, 4, 5)),
                                   places=10)
            self.assertAlmostEqual(core1.variance,
                                   statistics.pvariance((4, 4, 5)),
                                   places=10)
            self.assertEqual(core1.sample_count, 3)
Esempio n. 3
0
 def test_Polymorphism(self):
     # Put some data into the db
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         cpu = CPU(
             manufacturer="AMD",
             model="Ryzen 3800X",
             isa="x86-64",
             tdp=65,
             core_count=12,
             threads_per_core=2,
             nominal_frequency=3.0,
             maximum_frequency=4.2,
         )
         session.add(cpu)
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         cpus = session.query(CPU)
         cpu = cpus[0]
         self.assertEqual(cpu.manufacturer, "AMD")
         self.assertEqual(cpu.model, "Ryzen 3800X")
         self.assertEqual(cpu.isa, "x86-64")
         self.assertEqual(cpu.tdp, 65)
         self.assertEqual(cpu.core_count, 12)
         self.assertEqual(cpu.threads_per_core, 2)
         self.assertEqual(cpu.nominal_frequency, 3.0)
         self.assertEqual(cpu.maximum_frequency, 4.2)
Esempio n. 4
0
def main(args):
    database_engine = create_database_engine(args)
    system_info.create_system(args, database_engine)
    while True:
        time.sleep(args.sample_rate)
        snapshot = create_snapshot(args)
        snapshot.sample_rate = args.sample_rate
        with get_session(bind=database_engine) as session:
            print(snapshot)
            session.add(snapshot)
            session.commit()
Esempio n. 5
0
 def test_query_UserRole(self):
     # Put some data into the db
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         user = User(name="Fred")
         administrator = Role(name="Administrator")
         reporter = Role(name="Reporter")
         observer = Role(name="Observer")
         user.roles.append(administrator)
         user.roles.append(reporter)
         user.roles.append(observer)
         session.add(user)
     # Query the db and make sure everything lines up
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         users = session.query(User)
         roles = session.query(Role)
         # Make sure there are 3 roles in the roles table
         self.assertEqual(len(list(roles)), 3)
         # Make sure there are 3 roles in the user's roles list
         self.assertEqual(len(users[0].roles), 3)
         # Make sure they're the same 3 roles
         for role in users[0].roles:
             self.assertIn(role, roles)
         for role in roles:
             self.assertIn(role, users[0].roles)
Esempio n. 6
0
 def test_add_component(self):
     # Put some data into the db
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         cpu = CPU(
             manufacturer="AMD",
             model="Ryzen 3800X",
             isa="x86-64",
             tdp=105,
             core_count=8,
             threads_per_core=2,
             nominal_frequency=3.9,
             maximum_frequency=4.5,
         )
         gpu = GPU(
             manufacturer="NVIDIA",
             model="1070",
             architecture="CUDA",
             tdp=105,
             core_count=1920,
             memory=8.0,
         )
         memory = Memory(
             manufacturer="G-Skill",
             model="Trident",
             standard="DDR4",
             capacity=16.0,
             frequency=3600,
             cas_latency=16,
             t_rcd=19,
             t_rp=19,
             t_ras=39,
         )
         storage = Storage(
             manufacturer="Sabrent",
             model="Rocket",
             standard="NVMe PCIe 4.0",
             capacity=500.0,
             max_read=5000,
             max_write=2500,
         )
         os = OperatingSystem(
             developer="Microsoft",
             name="Windows 10",
         )
         system = System(name="Some System")
         system.add_component(cpu)
         system.add_component(gpu)
         system.add_component(memory)
         system.add_component(memory)
         system.add_component(storage)
         system.add_component(os)
         session.add(system)
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         systems = session.query(System)
         self.assertEqual(len(list(systems)), 1)
         system = systems[0]
         cpu = session.query(CPU).first()
         gpu = session.query(GPU).first()
         memory = session.query(Memory).first()
         storage = session.query(Storage).first()
         os = session.query(OperatingSystem).first()
         # Check that our system object is composed correctly
         self.assertEqual(system.name, "Some System")
         self.assertEqual(len(list(system.components)), 6)
         self.assertIn((1, cpu), system.components)
         self.assertIn((1, gpu), system.components)
         self.assertIn((2, memory), system.components)
         self.assertIn((1, storage), system.components)
         self.assertIn((1, os), system.components)
Esempio n. 7
0
 def tearDown(self):
     with get_session(bind=get_engine("sqlite:///:memory:")) as session:
         for table in session.execute(
                 "SELECT * FROM sqlite_master WHERE type='table'"):
             session.execute(f"DELETE FROM '{table[1]}'")