diff --git a/src/main/java/Main.java b/src/main/java/Main.java index f5235e9..ace1f6f 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -1,4 +1,3 @@ -import EventGenerators.CustomGenerator; import EventGenerators.InfinityEventGenerator; import OS.OrtOS; import Tasks.Task; @@ -9,12 +8,11 @@ public class Main { - private static final Logger log = LoggerFactory.getLogger(Main.class); + private static final Logger log = LoggerFactory.getLogger(SimpleTests.class); public static void main(String[] args) { final OrtOS ortOs = new OrtOS(); final Thread eventsGenerator = new InfinityEventGenerator(ortOs::interpretEvent); -// final Thread eventsGenerator = new CustomGenerator(ortOs::interpretEvent); final Task taskToStart = new Task(0, MAX_PRIORITY, ortOs); try { ortOs.startOS(taskToStart); diff --git a/src/main/tests/SimpleTests.java b/src/main/tests/SimpleTests.java new file mode 100644 index 0000000..fe257ad --- /dev/null +++ b/src/main/tests/SimpleTests.java @@ -0,0 +1,39 @@ +import EventGenerators.SimpleTests.GlobalResourceTest; +import OS.OrtOS; +import Tasks.Task; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import static OS.OrtOS.MAX_PRIORITY; + +public class SimpleTests { + + private static final Logger log = LoggerFactory.getLogger(SimpleTests.class); + + public static void main(String[] args) { + final OrtOS ortOs = new OrtOS(); + +// final Thread eventsGenerator = new EventGenerators.SimpleTests.InterruptionTest(ortOs::interpretEvent); +// final Thread eventsGenerator = new EventGenerators.SimpleTests.LocalResourceTest(ortOs::interpretEvent); + final Thread eventsGenerator = new GlobalResourceTest(ortOs::interpretEvent); + final Task taskToStart = new Task(0, MAX_PRIORITY, ortOs); + try { + ortOs.startOS(taskToStart); + eventsGenerator.start(); + //test 1 and 2 +// Thread.sleep(5000); + //test3 + Thread.sleep(10000); + } catch (final InterruptedException e) { + e.printStackTrace(); + } finally { + ortOs.shutdownOS(); + } + eventsGenerator.interrupt(); + try { + eventsGenerator.join(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/tests/TestsGenerators/SimpleTests/GlobalResourceTest.java b/src/main/tests/TestsGenerators/SimpleTests/GlobalResourceTest.java new file mode 100644 index 0000000..bd841ea --- /dev/null +++ b/src/main/tests/TestsGenerators/SimpleTests/GlobalResourceTest.java @@ -0,0 +1,46 @@ +package EventGenerators.SimpleTests; + +import EventGenerators.EventGenerator; + +import java.util.function.Consumer; +import java.util.stream.Stream; + +public class GlobalResourceTest extends EventGenerator { + public GlobalResourceTest(Consumer eventConsumer) { + // Тест на обработку захвата глобального ресурса: + // Ждём 1 секунду, пока выполнится начальная задача в ОС. + // Затем объявляем задачу с приоритетом 5. Ждём 200 мс. + // Объявляем создание локального ресурса. Ждём 400 мс. + // Захватываем глобальный ресурс 1. Ждём 50 мс. + // Объявляем задачу 321 с приоритетом 10. Ожидаем вытеснения задачи 123 с приоритетом 5. Ждем 100 мс. + // Пытаемся захватить глобальный ресурс 1. Он уже захвачен. Возвращаем задачу 123. Ждём 200 мс. + // Создаем локальный ресурс. Ждём 50 мс. + // Пытаемся захватить глобальный ресурс 2. + // Ожидаем завершения задачи 123. + // Возвращаем задачу 321. + // Предоставляем ресурс + // Освобождаем. + + super( + Stream.of( + 1000L, + 200L, + 400L, + 50L, + 100L, + 200L, + 50L + ).iterator(), + Stream.of( + EventGenerator.OsEvent.declareTaskEvent(123, 5), + EventGenerator.OsEvent.declareResourceEvent(5), + EventGenerator.OsEvent.getGlobalResource(0), + EventGenerator.OsEvent.declareTaskEvent(312, 10), + EventGenerator.OsEvent.getGlobalResource(0), + EventGenerator.OsEvent.declareResourceEvent(321), + EventGenerator.OsEvent.getGlobalResource(2) + ).iterator(), + eventConsumer + ); + } +} diff --git a/src/main/java/EventGenerators/CustomGenerator.java b/src/main/tests/TestsGenerators/SimpleTests/InterruptionTest.java similarity index 81% rename from src/main/java/EventGenerators/CustomGenerator.java rename to src/main/tests/TestsGenerators/SimpleTests/InterruptionTest.java index 8dbbbdd..e56aa47 100644 --- a/src/main/java/EventGenerators/CustomGenerator.java +++ b/src/main/tests/TestsGenerators/SimpleTests/InterruptionTest.java @@ -1,10 +1,12 @@ -package EventGenerators; +package EventGenerators.SimpleTests; + +import EventGenerators.EventGenerator; import java.util.function.Consumer; import java.util.stream.Stream; -public class CustomGenerator extends EventGenerator { - public CustomGenerator(Consumer eventConsumer) { +public class InterruptionTest extends EventGenerator { + public InterruptionTest(Consumer eventConsumer) { // Тест на обработку прерываний: // Ждём 1 секунду, пока выполнится начальная задача в ОС. // Затем объявляем задачу с приоритетом 5. Ждём 200 мс. diff --git a/src/main/tests/TestsGenerators/SimpleTests/LocalResourceTest.java b/src/main/tests/TestsGenerators/SimpleTests/LocalResourceTest.java new file mode 100644 index 0000000..910d969 --- /dev/null +++ b/src/main/tests/TestsGenerators/SimpleTests/LocalResourceTest.java @@ -0,0 +1,28 @@ +package EventGenerators.SimpleTests; + +import EventGenerators.EventGenerator; + +import java.util.function.Consumer; +import java.util.stream.Stream; + +public class LocalResourceTest extends EventGenerator { + public LocalResourceTest(Consumer eventConsumer) { + // Тест на обработку создания локального ресурса: + // Ждём 1 секунду, пока выполнится начальная задача в ОС. + // Затем объявляем задачу с приоритетом 5. Ждём 200 мс. + // Объявляем создание локального ресурса. + // Выполняем задачу. + // Освобождаем ресурс + super( + Stream.of( + 1000L, + 200L + ).iterator(), + Stream.of( + OsEvent.declareTaskEvent(123, 5), + OsEvent.declareResourceEvent(5) + ).iterator(), + eventConsumer + ); + } +}