Exemple #1
0
    def setUp(self):
        self.delivery = IODelivery()
        self.device1 = Mock()
        self.device2 = Mock()
        self.device3 = Mock()
        self.delivery.newDevice(self.device1)  # Impresora
        self.delivery.newDevice(self.device2)  # Pantalla

        print(self.delivery.numberOfDevices())
Exemple #2
0
class IODeliveryTest(unittest.TestCase):
	
	def setUp(self):
		self.delivery = IODelivery()
		self.device1 = Mock()
		self.device2 = Mock()
		self.device3 = Mock()
		self.delivery.newDevice(self.device1)  # Impresora
		self.delivery.newDevice(self.device2)  # Pantalla
		
		print(self.delivery.numberOfDevices())
		
	def test_when_ask_how_many_devices_are_then_correct_number_of_them(self):
		self.delivery.newDevice(self.device3)  # ARRANGE
		self.expected = 3
		
		self.value = self.delivery.numberOfDevices()  # ACT
		
		self.assertEquals(self.expected , self.value)  # ASSERT
	
	def test_when_new_instruction_puts_the_data_in_the_expected_device_queue(self):
		self.data = Mock()  # ARRANGE
		self.cod = 0  # CODIGO CORRESPONDIENTE A LA IMPRESORA 
		
		self.delivery.putInQueue(self.data, self.cod)  # ACT
	
		self.assertEquals(self.delivery.numberOfInstructions(self.cod) , 1)
Exemple #3
0
class IODeliveryTest(unittest.TestCase):
    def setUp(self):
        self.delivery = IODelivery()
        self.device1 = Mock()
        self.device2 = Mock()
        self.device3 = Mock()
        self.delivery.newDevice(self.device1)  # Impresora
        self.delivery.newDevice(self.device2)  # Pantalla

        print(self.delivery.numberOfDevices())

    def test_when_ask_how_many_devices_are_then_correct_number_of_them(self):
        self.delivery.newDevice(self.device3)  # ARRANGE
        self.expected = 3

        self.value = self.delivery.numberOfDevices()  # ACT

        self.assertEquals(self.expected, self.value)  # ASSERT

    def test_when_new_instruction_puts_the_data_in_the_expected_device_queue(
            self):
        self.data = Mock()  # ARRANGE
        self.cod = 0  # CODIGO CORRESPONDIENTE A LA IMPRESORA

        self.delivery.putInQueue(self.data, self.cod)  # ACT

        self.assertEquals(self.delivery.numberOfInstructions(self.cod), 1)
Exemple #4
0
class IntegrationTest(unittest.TestCase):


    def setUp(self):
        # miscellaneous
        self.semaphore = Condition()
        self.disk = HardDisk()
        self.comparator = lambda pcb1, pcb2: pcb1.getPriority() > pcb2.getPriority()  # the greater, the better
        self.readyQueue = OwnHeap(self.semaphore, self.comparator)
        
        # hardware
        self.memory = RAM(1000)
        self.mmu = MMU(1,self.memory)
        self.ioDelivery = IODelivery()
        self.progLoader = ProgramLoader(self.memory, self.disk, self.readyQueue,self.mmu)
        self.imanager = InterruptorManager()      
        self.cpu = CPU(self.memory, self.imanager, self.semaphore,self.mmu)
        self.scheduler = Scheduler(self.cpu, self.readyQueue , 5, self.semaphore)

        
        # devices
        self.spooler = Device('printer', self.imanager)
        self.screen = Device('screen', self.imanager)
        
        self.ioDelivery.newDevice(self.spooler)
        self.ioDelivery.newDevice(self.screen)

        # im 
        self.imanager.setScheduler(self.scheduler)
        self.imanager.setDisk(self.disk)
        self.imanager.setMmu(self.mmu)
        self.imanager.setIODelivery(self.ioDelivery)

        # loading programs
        self.ioInstruction = InstIO('directory', 0)
        self.cpuInstruction = InstCPU('1+1')
        self.prog1 = Program('ls')
        self.prog2 = Program('pwd')
        
        self.prog1.addInstruction(self.cpuInstruction)
        self.prog2.addInstruction(self.ioInstruction)
        
        self.disk.setProgram(self.prog1)
        self.disk.setProgram(self.prog2)
        

    def test_when_programLoader_loadProcessWithNoPriority_then_it_starts_the_expected_sequence(self):
        self.progLoader.loadProcess("ls")
        self.progLoader.loadProcess("pwd", 3)
        self.table = self.progLoader.getPcbTable()
        self.table.getPS()
        self.assertEqual(2, self.table.countActiveProcess())
        self.assertEquals(2 , self.readyQueue.length())
        self.assertEqual(self.cpuInstruction, self.memory.getDir(0))
Exemple #5
0
class IntegrationTest(unittest.TestCase):
    def setUp(self):
        # miscellaneous
        self.semaphore = Condition()
        self.disk = HardDisk()
        self.comparator = lambda pcb1, pcb2: pcb1.getPriority() > pcb2.getPriority()  # the greater, the better
        self.readyQueue = OwnHeap(self.semaphore, self.comparator)

        # hardware
        self.memory = RAM(1000)
        self.mmu = MMU(1, self.memory)
        self.ioDelivery = IODelivery()
        self.progLoader = ProgramLoader(self.memory, self.disk, self.readyQueue, self.mmu)
        self.imanager = InterruptorManager()
        self.cpu = CPU(self.memory, self.imanager, self.semaphore, self.mmu)
        self.scheduler = Scheduler(self.cpu, self.readyQueue, 5, self.semaphore)

        # devices
        self.spooler = Device("printer", self.imanager)
        self.screen = Device("screen", self.imanager)

        self.ioDelivery.newDevice(self.spooler)
        self.ioDelivery.newDevice(self.screen)

        # im
        self.imanager.setScheduler(self.scheduler)
        self.imanager.setDisk(self.disk)
        self.imanager.setMmu(self.mmu)
        self.imanager.setIODelivery(self.ioDelivery)

        # loading programs
        self.ioInstruction = InstIO("directory", 0)
        self.cpuInstruction = InstCPU("1+1")
        self.prog1 = Program("ls")
        self.prog2 = Program("pwd")

        self.prog1.addInstruction(self.cpuInstruction)
        self.prog2.addInstruction(self.ioInstruction)

        self.disk.setProgram(self.prog1)
        self.disk.setProgram(self.prog2)

    def test_when_programLoader_loadProcessWithNoPriority_then_it_starts_the_expected_sequence(self):
        self.progLoader.loadProcess("ls")
        self.progLoader.loadProcess("pwd", 3)
        self.table = self.progLoader.getPcbTable()
        self.table.getPS()
        self.assertEqual(2, self.table.countActiveProcess())
        self.assertEquals(2, self.readyQueue.length())
        self.assertEqual(self.cpuInstruction, self.memory.getDir(0))
Exemple #6
0
	def setUp(self):
		self.delivery = IODelivery()
		self.device1 = Mock()
		self.device2 = Mock()
		self.device3 = Mock()
		self.delivery.newDevice(self.device1)  # Impresora
		self.delivery.newDevice(self.device2)  # Pantalla
		
		print(self.delivery.numberOfDevices())
Exemple #7
0
    def setUp(self):
        # miscellaneous
        self.semaphore = Condition()
        self.disk = HardDisk()
        self.comparator = lambda pcb1, pcb2: pcb1.getPriority() > pcb2.getPriority()  # the greater, the better
        self.readyQueue = OwnHeap(self.semaphore, self.comparator)
        
        # hardware
        self.memory = RAM(1000)
        self.mmu = MMU(1,self.memory)
        self.ioDelivery = IODelivery()
        self.progLoader = ProgramLoader(self.memory, self.disk, self.readyQueue,self.mmu)
        self.imanager = InterruptorManager()      
        self.cpu = CPU(self.memory, self.imanager, self.semaphore,self.mmu)
        self.scheduler = Scheduler(self.cpu, self.readyQueue , 5, self.semaphore)

        
        # devices
        self.spooler = Device('printer', self.imanager)
        self.screen = Device('screen', self.imanager)
        
        self.ioDelivery.newDevice(self.spooler)
        self.ioDelivery.newDevice(self.screen)

        # im 
        self.imanager.setScheduler(self.scheduler)
        self.imanager.setDisk(self.disk)
        self.imanager.setMmu(self.mmu)
        self.imanager.setIODelivery(self.ioDelivery)

        # loading programs
        self.ioInstruction = InstIO('directory', 0)
        self.cpuInstruction = InstCPU('1+1')
        self.prog1 = Program('ls')
        self.prog2 = Program('pwd')
        
        self.prog1.addInstruction(self.cpuInstruction)
        self.prog2.addInstruction(self.ioInstruction)
        
        self.disk.setProgram(self.prog1)
        self.disk.setProgram(self.prog2)
Exemple #8
0
    def setUp(self):
        # miscellaneous
        self.semaphore = Condition()
        self.disk = HardDisk()
        self.comparator = lambda pcb1, pcb2: pcb1.getPriority() > pcb2.getPriority()  # the greater, the better
        self.readyQueue = OwnHeap(self.semaphore, self.comparator)

        # hardware
        self.memory = RAM(1000)
        self.mmu = MMU(1, self.memory)
        self.ioDelivery = IODelivery()
        self.progLoader = ProgramLoader(self.memory, self.disk, self.readyQueue, self.mmu)
        self.imanager = InterruptorManager()
        self.cpu = CPU(self.memory, self.imanager, self.semaphore, self.mmu)
        self.scheduler = Scheduler(self.cpu, self.readyQueue, 5, self.semaphore)

        # devices
        self.spooler = Device("printer", self.imanager)
        self.screen = Device("screen", self.imanager)

        self.ioDelivery.newDevice(self.spooler)
        self.ioDelivery.newDevice(self.screen)

        # im
        self.imanager.setScheduler(self.scheduler)
        self.imanager.setDisk(self.disk)
        self.imanager.setMmu(self.mmu)
        self.imanager.setIODelivery(self.ioDelivery)

        # loading programs
        self.ioInstruction = InstIO("directory", 0)
        self.cpuInstruction = InstCPU("1+1")
        self.prog1 = Program("ls")
        self.prog2 = Program("pwd")

        self.prog1.addInstruction(self.cpuInstruction)
        self.prog2.addInstruction(self.ioInstruction)

        self.disk.setProgram(self.prog1)
        self.disk.setProgram(self.prog2)
    def __build(self, queue, scheduler):

        # miscellaneous
        self.ioDelivery = IODelivery()
        #hardware
        self.progLoader = ProgramLoader(self.ram, self.disk, queue, self.mmu)
        # InterruptorManager
        self.imanager.setScheduler(scheduler)
        self.imanager.setDisk(self.disk)
        self.imanager.setMmu(self.mmu)
        self.imanager.setIODelivery(self.ioDelivery)
        self.imanager.setSemaphore(self.condition)
        self.imanager.setPcbTable(self.progLoader.getPcbTable())
        self.imanager.setProgramLoader(self.progLoader)

        self.loggerCpu = CpuFileLogger("../log/cpu_log", self.console)
        self.cpu.setLogger(self.loggerCpu)

        self.clock = Clock(self.cpu)

        return Kernel(self.clock, self.progLoader, self.imanager,
                      self.ioDelivery)