def test_workload(self): """ Test the workload generating work in simulation """ sim = get_mock_simulation() sim.env = simpy.Environment() sim.replicas = [ get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE) ] work = MobileWorkloadTests( sim, move_prob=1.0, switch_prob=1.0, read_prob=0.5, access_mean=20, access_stddev=4, objects=["A", "B", "C", "D", "E"] ) env.run(until=1000) calls = sum(replica.write.call_count for replica in sim.replicas) calls += sum(replica.read.call_count for replica in sim.replicas) self.assertGreater(calls, 25)
def test_open_multi_object(self): """ Test opening an multiple objects from a blank slate """ sim = get_mock_simulation() sim.replicas = [ get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE) ] work = MobileWorkload(sim, objects=["A", "B", "C", "D", "E"]) self.assertEqual(len(work.objects), 5) self.assertEqual(work.objects, ["A", "B", "C", "D", "E"]) self.assertIsNotNone(work.location) self.assertIsNotNone(work.device) self.assertIsNotNone(work.current) for idx in xrange(500): work.update() self.assertIsNotNone(work.current) self.assertEqual(len(work.objects), 5) self.assertLessEqual(len(filter(None, work.objects)), 5)
def test_workload(self): """ Test the workload generating work in simulation """ sim = get_mock_simulation() sim.env = simpy.Environment() sim.replicas = [ get_mock_replica(sim, id="r0", location=Location.HOME), get_mock_replica(sim, id="r1", location=Location.MOBILE), ] # set up the access tracking for replica in sim.replicas: replica.read = AccessTracking(sim.env) replica.write = AccessTracking(sim.env) work = TracesWorkload(TRACES, sim) sim.env.run(until=2000) writes = sum(replica.write.call_count for replica in sim.replicas) reads = sum(replica.read.call_count for replica in sim.replicas) self.assertEqual(reads, 6) self.assertEqual(writes, 12) devices = {device.id: device for device in sim.replicas} for access in work.reader: device = devices[access.replica] method = None if access.method == READ: method = device.read if access.method == WRITE: method = device.write self.assertIn(access.timestep, method.history) method.mock.assert_any_call(access.object)
def test_locations(self): """ Test the workload extracting locations from simulation """ sim = get_mock_simulation() sim.replicas = [ get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.HOME), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.WORK), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE), get_mock_replica(sim, location=Location.MOBILE) ] work = MobileWorkload(sim, objects=['A', 'B', 'C']) self.assertEqual(len(work.locations), 3) for loc, num in ((Location.HOME, 2), (Location.WORK, 2), (Location.MOBILE, 3)): self.assertEqual(len(work.locations[loc]), num)