From 632fd730918de9d6200c6d802e433a894906544e Mon Sep 17 00:00:00 2001 From: arnaudlabourel <arnaud.labourel@univ-amu.fr> Date: Tue, 30 Nov 2021 17:21:21 +0100 Subject: [PATCH] =?UTF-8?q?Premi=C3=A8re=20version=20du=20projet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 ++-- build.gradle | 7 +- settings.gradle | 2 +- src/main/java/cluster/App.java | 17 +++++ src/main/java/image/BlankImage.java | 28 -------- src/main/java/image/BlankImageFactory.java | 8 --- src/main/java/image/Image.java | 9 --- src/main/java/image/ImageFactory.java | 5 -- src/main/java/image/Point.java | 30 --------- src/main/java/image/Shape.java | 18 ----- src/main/java/util/Matrices.java | 77 ---------------------- src/main/java/viewer/Display.java | 51 -------------- src/main/java/viewer/Main.java | 28 -------- src/test/java/BlankImageTest.java | 28 -------- src/test/java/cluster/TestJob.java | 49 ++++++++++++++ 15 files changed, 74 insertions(+), 296 deletions(-) create mode 100644 src/main/java/cluster/App.java delete mode 100644 src/main/java/image/BlankImage.java delete mode 100644 src/main/java/image/BlankImageFactory.java delete mode 100644 src/main/java/image/Image.java delete mode 100644 src/main/java/image/ImageFactory.java delete mode 100644 src/main/java/image/Point.java delete mode 100644 src/main/java/image/Shape.java delete mode 100644 src/main/java/util/Matrices.java delete mode 100644 src/main/java/viewer/Display.java delete mode 100644 src/main/java/viewer/Main.java delete mode 100644 src/test/java/BlankImageTest.java create mode 100644 src/test/java/cluster/TestJob.java diff --git a/README.md b/README.md index c6275d8..4ff0176 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,12 @@ -# Représentation d'images en couleurs +# Gestion de tâches dans une ferme de machines ## Description du projet -On va considérer quatre manières de représenter une image en couleur et donc quatre classes d'images : - -- `BruteRasterImage` -- `PaletteRasterImage` -- `SparseRasterImage` -- `VectorImage` +Vous allez travailler dans cet examen à la gestion d'une ferme de nœuds (*nodes*) représentant +des ordinateurs qui mettent à disposition de la mémoire (*memory*) exprimée en octets (o) et +d'un nombre d'opérations exprimé en FLOP qui peut être consommées par des tâches (*job*). +L'objectif est de proposer un ordonnanceur (*scheduler*) qui place un ensemble de tâches +sur les nœuds de manière à maximiser l'utilisation de la mémoire et du nombre d'opérations. ## Membres du projet diff --git a/build.gradle b/build.gradle index 224d585..caeae79 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,7 @@ plugins { id 'application' - id "org.openjfx.javafxplugin" version "0.0.10" } -javafx { - version = "17" - modules = [ 'javafx.controls', 'javafx.fxml' ] -} repositories { mavenCentral() @@ -23,5 +18,5 @@ test { } application { - mainClassName = "viewer.Main" + mainClassName = "cluster.App" } \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 2dc959b..8b654c6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,2 @@ -rootProject.name = 'color-image' +rootProject.name = 'cluster' diff --git a/src/main/java/cluster/App.java b/src/main/java/cluster/App.java new file mode 100644 index 0000000..5ef8100 --- /dev/null +++ b/src/main/java/cluster/App.java @@ -0,0 +1,17 @@ +package cluster; + +public class App { + + + public static void main(String[] args) throws Exception{ + // TODO : décommenter pour tester le main. + /* + Job job1 = new Job(1000, 1000); + Job job2 = new Job(3000, 1000); + Node node = new Node("Calcul", 10000, 3000); + node.acceptJob(job1); + node.acceptJob(job2); + node.printJobs(); + */ + } +} diff --git a/src/main/java/image/BlankImage.java b/src/main/java/image/BlankImage.java deleted file mode 100644 index 6493436..0000000 --- a/src/main/java/image/BlankImage.java +++ /dev/null @@ -1,28 +0,0 @@ -package image; - -import javafx.scene.paint.Color; - -public class BlankImage implements Image{ - private final int width; - private final int height; - - public BlankImage(int width, int height) { - this.width = width; - this.height = height; - } - - @Override - public Color getPixelColor(int x, int y) { - return Color.WHITE; - } - - @Override - public int getWidth() { - return width; - } - - @Override - public int getHeight() { - return height; - } -} diff --git a/src/main/java/image/BlankImageFactory.java b/src/main/java/image/BlankImageFactory.java deleted file mode 100644 index 77403f2..0000000 --- a/src/main/java/image/BlankImageFactory.java +++ /dev/null @@ -1,8 +0,0 @@ -package image; - -public class BlankImageFactory implements ImageFactory { - @Override - public Image makeImage() { - return new BlankImage(1000, 800); - } -} diff --git a/src/main/java/image/Image.java b/src/main/java/image/Image.java deleted file mode 100644 index 01dcedc..0000000 --- a/src/main/java/image/Image.java +++ /dev/null @@ -1,9 +0,0 @@ -package image; - -import javafx.scene.paint.Color; - -public interface Image { - Color getPixelColor(int x, int y); - int getWidth(); - int getHeight(); -} diff --git a/src/main/java/image/ImageFactory.java b/src/main/java/image/ImageFactory.java deleted file mode 100644 index fb48197..0000000 --- a/src/main/java/image/ImageFactory.java +++ /dev/null @@ -1,5 +0,0 @@ -package image; - -public interface ImageFactory { - Image makeImage(); -} diff --git a/src/main/java/image/Point.java b/src/main/java/image/Point.java deleted file mode 100644 index 68ceaaa..0000000 --- a/src/main/java/image/Point.java +++ /dev/null @@ -1,30 +0,0 @@ -package image; - -import java.util.Objects; - -/** - * Created by Arnaud Labourel on 09/11/2018. - */ -public class Point { - public final int x, y; - - Point(int x, int y) { - this.x = x; - this.y = y; - } - - @Override - public final boolean equals(Object o) { - if (this == o) return true; - if (!(o instanceof Point point)) return false; - return x == point.x && - y == point.y; - } - - @Override - public final int hashCode() { - return Objects.hash(x, y); - } - - -} diff --git a/src/main/java/image/Shape.java b/src/main/java/image/Shape.java deleted file mode 100644 index 1b32407..0000000 --- a/src/main/java/image/Shape.java +++ /dev/null @@ -1,18 +0,0 @@ -package image; - -import javafx.scene.paint.Color; - -public interface Shape { - /** - * Tests if a specified Point is inside the boundary of the Shape. - * - * @return true if the point is inside the shape and false otherwise. - */ - boolean contains(Point point); - /** - * Return the color of the interior of the Shape. - * - * @return the color of the shape. - */ - Color getColor(); -} diff --git a/src/main/java/util/Matrices.java b/src/main/java/util/Matrices.java deleted file mode 100644 index d499926..0000000 --- a/src/main/java/util/Matrices.java +++ /dev/null @@ -1,77 +0,0 @@ -package util; - -import java.util.Objects; - -/** - * Created by Arnaud Labourel on 23/11/2018. - */ -public class Matrices { - - /** - * Ensures that the given matrix does not have null parts : itself being null, having null row or having - * null values. - * - * @throws NullPointerException if there are null parts in the matrix. - * @param matrix the matrix to be tested. - */ - - public static void requiresNonNull(Object[][] matrix) { - Objects.requireNonNull(matrix, "The matrix must not be null."); - for (int x = 0; x < getRowCount(matrix); x++) { - Objects.requireNonNull(matrix[x], "The matrix must not have rows equals to null."); - for (int y = 0; y < matrix[x].length; y++) { - Objects.requireNonNull(matrix[x][y], "The matrix must not have values equals to null."); - } - } - } - - /** - * Ensures that the given matrix (assumed to be rectangular) does not have zero rows or zero columns. - * - * @throws IllegalArgumentException if the matrix have zero rows or zero columns. - * @param matrix the matrix to be tested. - */ - public static void requiresNonZeroDimensions(Object[][] matrix) { - if (getRowCount(matrix) == 0) { - throw new IllegalArgumentException("The matrix must not have zero rows."); - } - if (getColumnCount(matrix) == 0) { - throw new IllegalArgumentException("The matrix must not have zero columns."); - } - } - - - /** - * Ensures that the given matrix is rectangular, i.e., all rows have the same size. - * - * @throws IllegalArgumentException if the matrix have rows with different sizes. - * @param matrix the matrix to be tested. - */ - public static void requiresRectangularMatrix(Object[][] matrix) { - for (int x = 1; x < getRowCount(matrix); x++) { - if (matrix[x].length != matrix[0].length) - throw new IllegalArgumentException("The matrix must be rectangular."); - } - } - - /** - * Give the number of rows of a matrix. - * - * @param matrix the matrix. - * @return the number of rows of the matrix. - */ - public static int getRowCount(Object[][] matrix){ - return matrix.length; - } - - /** - * Give the number of columns of a matrix (assumed to be rectangular). - * - * @param matrix the matrix. - * @return the number of rows of the matrix. - */ - public static int getColumnCount(Object[][] matrix){ - return matrix[0].length; - } - -} diff --git a/src/main/java/viewer/Display.java b/src/main/java/viewer/Display.java deleted file mode 100644 index cbe0d3b..0000000 --- a/src/main/java/viewer/Display.java +++ /dev/null @@ -1,51 +0,0 @@ -package viewer; - -import image.*; -import javafx.fxml.FXML; -import javafx.fxml.Initializable; -import javafx.scene.canvas.Canvas; -import javafx.scene.canvas.GraphicsContext; -import javafx.scene.image.PixelWriter; -import javafx.scene.paint.Color; - -import java.net.URL; -import java.util.ResourceBundle; - -public class Display implements Initializable { - @FXML - private Canvas canvas; - - private Image image; - - @Override - public void initialize(URL location, ResourceBundle resources) { - ImageFactory imageFactory = new BlankImageFactory(); - // TODO : changer la fabrique d'image pour construire des images. - - this.image = imageFactory.makeImage(); - - render(); - } - - private void render() { - int pixelWidth = image.getWidth(); - int pixelHeight = image.getHeight(); - - canvas.setWidth(pixelWidth); - canvas.setHeight(pixelHeight); - - GraphicsContext graphicsContext = canvas.getGraphicsContext2D(); - PixelWriter pixelWriter = graphicsContext.getPixelWriter(); - - for (int i = 0; i < pixelWidth; i++) { - for (int j = 0; j < pixelHeight; j++) { - renderPixel(i, j, pixelWriter); - } - } - } - - private void renderPixel(int x, int y, PixelWriter pixelWriter) { - pixelWriter.setColor(x, y, image.getPixelColor(x, y)); - } - -} diff --git a/src/main/java/viewer/Main.java b/src/main/java/viewer/Main.java deleted file mode 100644 index 382ee99..0000000 --- a/src/main/java/viewer/Main.java +++ /dev/null @@ -1,28 +0,0 @@ -package viewer; - -import javafx.application.Application; -import javafx.fxml.FXMLLoader; -import javafx.scene.Parent; -import javafx.scene.Scene; -import javafx.stage.Stage; - -import java.io.IOException; -import java.util.Objects; - - -public class Main extends Application -{ - - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage primaryStage) throws IOException { - Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getClassLoader().getResource("fxml/Display.fxml"))); - primaryStage.setTitle("Image display"); - primaryStage.setScene(new Scene(root)); - primaryStage.show(); - - } -} diff --git a/src/test/java/BlankImageTest.java b/src/test/java/BlankImageTest.java deleted file mode 100644 index b116824..0000000 --- a/src/test/java/BlankImageTest.java +++ /dev/null @@ -1,28 +0,0 @@ -import image.BlankImage; -import javafx.scene.paint.Color; - -import org.junit.jupiter.api.Test; -import static org.assertj.core.api.Assertions.assertThat; - -public class BlankImageTest { - @Test - public void testBlankImageGetWidth(){ - BlankImage blankImage = new BlankImage(200, 300); - assertThat(blankImage.getWidth()).isEqualTo(200); - } - - @Test - public void testBlankImageGetHeight(){ - BlankImage blankImage = new BlankImage(200, 300); - assertThat(blankImage.getHeight()).isEqualTo(300); - } - - @Test - public void testBlankImageGetPixelColor(){ - BlankImage blankImage = new BlankImage(200, 300); - assertThat(blankImage.getPixelColor(0,0)).isEqualTo(Color.WHITE); - assertThat(blankImage.getPixelColor(100,100)).isEqualTo(Color.WHITE); - assertThat(blankImage.getPixelColor(199,299)).isEqualTo(Color.WHITE); - } - -} diff --git a/src/test/java/cluster/TestJob.java b/src/test/java/cluster/TestJob.java new file mode 100644 index 0000000..e74dab4 --- /dev/null +++ b/src/test/java/cluster/TestJob.java @@ -0,0 +1,49 @@ +package cluster; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class TestJob { + //TODO : décommenter pour tester la classe Job +/* + @Test + void testToString(){ + // Test with Junit + Job job1 = new Job(100, 100); + String expectedStringRepresentation1 = "Job " + job1.getId() + " (100FLOP, 100o)"; + assertEquals(expectedStringRepresentation1, job1.toString()); + + // Test with assertJ + Job job2 = new Job(1, 10); + String expectedStringRepresentation2 = "Job " + job2.getId() + " (10FLOP, 1o)"; + assertThat(job2.toString()).isEqualTo(expectedStringRepresentation2); + } + + @Test + void testResetJobCount(){ + Job.resetJobCount(); + Job job = new Job(10, 1000); + assertThat(job.getId()).isEqualTo(0); + } + + @Test + void testGetId(){ + int[] memories = {10, 1000}; + for(int memory : memories){ + Job job = new Job(memory, 1000); + assertThat(job.getMemory()).isEqualTo(memory); + } + } + + @Test + void testGetJobCount(){ + Job.resetJobCount(); + for(int jobCount = 1; jobCount < 4; jobCount++){ + Job job = new Job(10, 1000); + assertThat(Job.getJobCount()).isEqualTo(jobCount); + } + } + */ + +} -- GitLab