def test_meta_machine(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) mm = MetaMachine(self.serial_number) self.assertEqual(mm.serial_number, self.serial_number) self.assertEqual(mm.snapshots, [ms3]) self.assertEqual(mm.platform, MACOS) tag1, _ = Tag.objects.get_or_create(name="tag111") tag2, _ = Tag.objects.get_or_create(name="tag222") MachineTag.objects.create(tag=tag1, serial_number=self.serial_number) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id}), mm.get_probe_filtering_values()) MetaBusinessUnitTag.objects.create( tag=tag2, meta_business_unit=self.meta_business_unit) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id, tag2.id}), mm.get_probe_filtering_values()) mm.archive() mm = MetaMachine(self.serial_number) self.assertEqual(mm.snapshots, []) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshotCommit.objects.count(), 3) self.assertEqual(CurrentMachineSnapshot.objects.count(), 0)
def test_source(self): tree = copy.deepcopy(self.machine_snapshot3) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot3) tree["serial_number"] = tree["serial_number"][::-1] msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) self.assertEqual(msc2.source, msc.source) self.assertEqual(ms2.source, ms.source) self.assertEqual([], list(Source.objects.current_machine_group_sources())) self.assertEqual([ms.source], list(Source.objects.current_business_unit_sources())) self.assertEqual( [ms.source], list(Source.objects.current_machine_snapshot_sources())) self.assertEqual([ms.source], list(Source.objects.current_macos_apps_sources())) for sn in (self.serial_number, ms2.serial_number): mm = MetaMachine(sn) mm.archive() self.assertEqual( [], list(Source.objects.current_machine_snapshot_sources())) self.assertEqual([], list(Source.objects.current_macos_apps_sources()))
def test_machine_tag(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tag = Tag.objects.create(name="tag name") self.assertEqual(str(tag), "tag name") MachineTag.objects.create(tag=tag, serial_number=self.serial_number) self.assertEqual(list(Tag.objects.used_in_inventory()), [(tag, 1)]) mm = MetaMachine(self.serial_number) mm.archive() self.assertEqual(list(Tag.objects.used_in_inventory()), [])
def test_machine_tag(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tag = Tag.objects.create(name="tag name") self.assertEqual(str(tag), "tag name") MachineTag.objects.create(tag=tag, serial_number=self.serial_number) self.assertEqual(list(Tag.objects.used_in_inventory()), [(tag, 1)]) mm = MetaMachine(self.serial_number) mm.archive() self.assertEqual(list(Tag.objects.used_in_inventory()), [])
def test_meta_machine(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms, _ = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2, _ = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3, _ = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) mm = MetaMachine(self.serial_number) self.assertEqual(mm.serial_number, self.serial_number) self.assertEqual(mm.snapshots, [ms3]) self.assertEqual(mm.platform, MACOS) tag1, _ = Tag.objects.get_or_create(name="tag111") tag2, _ = Tag.objects.get_or_create(name="tag222") MachineTag.objects.create(tag=tag1, serial_number=self.serial_number) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id}), mm.get_probe_filtering_values()) MetaBusinessUnitTag.objects.create( tag=tag2, meta_business_unit=self.meta_business_unit) # cached self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id}), mm.get_probe_filtering_values()) # fresh mm = MetaMachine(self.serial_number) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id, tag2.id}), mm.get_probe_filtering_values()) # cached with cache framework mm = MetaMachine(self.serial_number) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id, tag2.id}), mm.cached_probe_filtering_values) self.assertEqual( (MACOS, None, {self.meta_business_unit.id}, {tag1.id, tag2.id}), cache.get("mm-probe-fvs_{}".format( mm.get_urlsafe_serial_number()))) mm.archive() mm = MetaMachine(self.serial_number) self.assertEqual(mm.snapshots, []) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshotCommit.objects.count(), 3) self.assertEqual(CurrentMachineSnapshot.objects.count(), 0)
def test_meta_machine(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) mm = MetaMachine(self.serial_number) self.assertEqual(mm.serial_number, self.serial_number) self.assertEqual(mm.snapshots, [ms3]) self.assertEqual(mm.platform, MACOS) mm.archive() mm = MetaMachine(self.serial_number) self.assertEqual(mm.snapshots, []) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshotCommit.objects.count(), 3) self.assertEqual(CurrentMachineSnapshot.objects.count(), 0)
def test_source(self): tree = copy.deepcopy(self.machine_snapshot3) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tree = copy.deepcopy(self.machine_snapshot3) tree["serial_number"] = tree["serial_number"][::-1] msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) self.assertEqual(msc2.source, msc.source) self.assertEqual(ms2.source, ms.source) self.assertEqual([], list(Source.objects.current_machine_group_sources())) self.assertEqual([], list(Source.objects.current_business_unit_sources())) self.assertEqual([ms.source], list(Source.objects.current_machine_snapshot_sources())) self.assertEqual([ms.source], list(Source.objects.current_macos_apps_sources())) for sn in (self.serial_number, ms2.serial_number): mm = MetaMachine(sn) mm.archive() self.assertEqual([], list(Source.objects.current_machine_snapshot_sources())) self.assertEqual([], list(Source.objects.current_macos_apps_sources()))
def test_machine_snapshot_current(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshot.objects.current().count(), 1) self.assertEqual(MachineSnapshot.objects.current().get(pk=ms3.id), ms3) mm = MetaMachine(self.serial_number) mm.archive() self.assertEqual(CurrentMachineSnapshot.objects.count(), 0) tree = copy.deepcopy(self.machine_snapshot3) msc4, ms4 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree(tree) self.assertEqual(ms3, ms4) self.assertEqual(CurrentMachineSnapshot.objects.count(), 1) cms = CurrentMachineSnapshot.objects.get(serial_number=self.serial_number) self.assertEqual(cms.machine_snapshot, ms3)
def test_meta_machine(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) mm = MetaMachine(self.serial_number) self.assertEqual(mm.serial_number, self.serial_number) self.assertEqual(mm.snapshots, [ms3]) self.assertEqual(mm.platform, MACOS) mm.archive() mm = MetaMachine(self.serial_number) self.assertEqual(mm.snapshots, []) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshotCommit.objects.count(), 3) self.assertEqual(CurrentMachineSnapshot.objects.count(), 0)
def test_has_recent_source_snapshot(self): tree = copy.deepcopy(self.machine_snapshot) module = self.source["module"] age = 7200 last_seen = datetime.utcnow() - timedelta(seconds=age) tree["last_seen"] = last_seen msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) mm = MetaMachine(self.serial_number + "e12908e1209") self.assertFalse(mm.has_recent_source_snapshot(module, max_age=2 * age)) mm = MetaMachine(self.serial_number) self.assertFalse( mm.has_recent_source_snapshot(module + "lkjdelkwd", max_age=2 * age)) self.assertFalse(mm.has_recent_source_snapshot(module)) self.assertTrue(mm.has_recent_source_snapshot(module, max_age=2 * age)) mm.archive() self.assertFalse(mm.has_recent_source_snapshot(module)) self.assertFalse(mm.has_recent_source_snapshot(module, max_age=2 * age))
def test_machine_snapshot_current(self): tree = copy.deepcopy(self.machine_snapshot) msc, ms = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot2) msc2, ms2 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) tree = copy.deepcopy(self.machine_snapshot3) msc3, ms3 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) self.assertEqual(MachineSnapshot.objects.count(), 3) self.assertEqual(MachineSnapshot.objects.current().count(), 1) self.assertEqual(MachineSnapshot.objects.current().get(pk=ms3.id), ms3) mm = MetaMachine(self.serial_number) mm.archive() self.assertEqual(CurrentMachineSnapshot.objects.count(), 0) tree = copy.deepcopy(self.machine_snapshot3) msc4, ms4 = MachineSnapshotCommit.objects.commit_machine_snapshot_tree( tree) self.assertEqual(ms3, ms4) self.assertEqual(CurrentMachineSnapshot.objects.count(), 1) cms = CurrentMachineSnapshot.objects.get( serial_number=self.serial_number) self.assertEqual(cms.machine_snapshot, ms3)