From 5734555519d2da99e956b1fe95c7eb9de547d60a Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 17 May 2020 16:42:13 +0200 Subject: [PATCH] + test stub --- test/files/FileTest.java | 119 +++ test/files/TestableFile.java | 21 + test/scenario.md | 26 + test/test-config.uxf | 1585 ++++++++++++++++++++++++++++++++++ 4 files changed, 1751 insertions(+) create mode 100644 test/files/FileTest.java create mode 100644 test/files/TestableFile.java create mode 100644 test/scenario.md create mode 100644 test/test-config.uxf diff --git a/test/files/FileTest.java b/test/files/FileTest.java new file mode 100644 index 0000000..6b07e4d --- /dev/null +++ b/test/files/FileTest.java @@ -0,0 +1,119 @@ +package files; + +import com.olexyn.ensync.Execute; +import com.olexyn.ensync.Tools; + +public class FileTest { + + Execute x = new Execute(); + Tools tools = new Tools(); + + private static final String PATH = System.getProperty("user.dir");; + + public static void main(String... args){ + + + + } + + /** + * Simulates user activity on disk. + */ + void createFiles() throws InterruptedException { + StringBuilder sbA = new StringBuilder("a"); + StringBuilder sbB = new StringBuilder("b"); + + // dv (deleted-void) + // TODO + + // dd + tools.writeSbToFile(PATH+"/a/dd", sbA); + Thread.sleep(10); + tools.writeSbToFile(PATH+"/b/dd", sbB); + Thread.sleep(10);Thread.sleep(10); + x.execute(new String[]{"rm", PATH+"/a/dd"}); + Thread.sleep(10); + x.execute(new String[]{"rm", PATH+"/b/dd"}); + Thread.sleep(10); + + // dc + tools.writeSbToFile(PATH+"/a/dc", sbA); + Thread.sleep(10); + x.execute(new String[]{"rm", PATH+"/a/dc"}); + Thread.sleep(10); + tools.writeSbToFile(PATH+"/b/dc", sbB); + Thread.sleep(10); + + // dm + tools.writeSbToFile(PATH+"/a/dm", sbA); + Thread.sleep(10); + x.execute(new String[]{"rm", PATH+"/a/dm"}); + Thread.sleep(10); + tools.writeSbToFile(PATH+"/b/dm", sbB); + Thread.sleep(10); + + // dv (deleted-void) + // TODO + + // cd + // TODO + + // cc + // TODO + + // cm + // TODO + + // cv (created-void) + // TODO + + // md + // TODO + + // mc + // TODO + + // mm + // TODO + + } + + + /** + * Checks if end-state is as desired. + * @throws Exception otherwise. + */ + void fileTest() throws Exception { + + + + + + + + // Files where the second (= the newer) file was deleted. Thus both files should not exist in the end-state. + String[] arrayToDelete = {"/a/dd", "/b/dd" , "/a/cd", "/b/cd", "/a/md", "/b/md"}; + for (String path : arrayToDelete){ + if (new TestableFile(path).exists()) throw new Exception(); + } + + // Files where the second (= the newer) file was created or modified. Thus both files should contain "b" in the end-state. + String[] arrayToB = {"/a/dc", "/b/dc" , "/a/dm", "/b/dm", "/a/cc", "/b/cc"}; + for (String path : arrayToB){ + if (!new TestableFile(path).hasContent("b")) throw new Exception(); + } + + + + + } + + + // Assertion Exception + + + + + + +} diff --git a/test/files/TestableFile.java b/test/files/TestableFile.java new file mode 100644 index 0000000..f72311d --- /dev/null +++ b/test/files/TestableFile.java @@ -0,0 +1,21 @@ +package files; + +import com.olexyn.ensync.Tools; + +import java.io.File; + +public class TestableFile extends File { + + Tools tools = new Tools(); + + + public TestableFile(String pathname) { + super(pathname); + } + + public boolean hasContent(String s){ + + String line = tools.fileToLines(this).get(0); + return line.equals(s); + } +} diff --git a/test/scenario.md b/test/scenario.md new file mode 100644 index 0000000..2c3450c --- /dev/null +++ b/test/scenario.md @@ -0,0 +1,26 @@ +### Testing Scenario +Test two configs: +1. FileOps happen while System is down. +1. FileOps happen while System is running. + +
+ + +| Symbol | Description| +---|--- +`a` | File `a` in directory `A` +`b` | File `b` in directory `B` +`d(x)` | File `x` is deleted. +`c(x)` | File `x` is created. +`m(x)` | File `x` is modified. + + +
+ +| `Given` | | `When` | | `Then` | | +---|---|---|---|---|--- +| `A` | `B`| `A` | `B`|`A` | `B`| +| `a` | | `d(a)` | | | | +| `a` | `b` | `d(a)` | `d(b)` | | | + + diff --git a/test/test-config.uxf b/test/test-config.uxf new file mode 100644 index 0000000..7367943 --- /dev/null +++ b/test/test-config.uxf @@ -0,0 +1,1585 @@ + + + 10 + + UMLObject + + 690 + 1930 + 150 + 40 + + otherDirectory + + + + UMLObject + + 690 + 1890 + 150 + 40 + + this.Directory + + + + UMLObject + + 780 + 1830 + 90 + 40 + + Delete +bg=red +group=1 + + + + UMLObject + + 870 + 1830 + 90 + 40 + + Create +bg=green +group=1 + + + + UMLObject + + 960 + 1830 + 90 + 40 + + Modify +bg=yellow +group=1 + + + + UMLState + + 850 + 1890 + 70 + 40 + + File +bg=red +group=2 + + + + UMLObject + + 690 + 1830 + 90 + 40 + + Unchanged +bg=white +group=1 + + + + UMLState + + 930 + 1930 + 60 + 40 + + File +group=2 + + + + UMLState + + 850 + 1930 + 70 + 40 + + File +bg=red +group=2 + + + + UMLState + + 920 + 1890 + 70 + 40 + + File +bg=red +group=2 + + + + UMLState + + 1210 + 1890 + 70 + 40 + + File +bg=green +group=3 + + + + UMLState + + 1210 + 1930 + 70 + 40 + + File +group=3 + + + + UMLState + + 1140 + 1930 + 70 + 40 + + File +bg=green +group=3 + + + + UMLState + + 1140 + 1890 + 70 + 40 + + File +bg=green +group=3 + + + + UMLState + + 1500 + 1890 + 70 + 40 + + File +bg=yellow +group=4 + + + + UMLState + + 1500 + 1930 + 70 + 40 + + File +group=4 + + + + UMLState + + 1430 + 1930 + 70 + 40 + + File +bg=yellow +group=4 + + + + UMLState + + 1430 + 1890 + 70 + 40 + + File +bg=yellow +group=4 + + + + UMLState + + 990 + 1890 + 70 + 40 + + File +bg=red +group=2 + + + + UMLState + + 990 + 1930 + 70 + 40 + + File +bg=green +group=2 + + + + UMLState + + 1060 + 1890 + 70 + 40 + + File +bg=red +group=2 + + + + UMLState + + 1060 + 1930 + 70 + 40 + + File +bg=yellow +group=2 + + + + UMLState + + 1350 + 1890 + 70 + 40 + + File +bg=green +group=3 + + + + UMLState + + 1350 + 1930 + 70 + 40 + + File +bg=yellow +group=3 + + + + UMLState + + 850 + 1990 + 70 + 40 + + do +nothing + + + + UMLState + + 920 + 1990 + 790 + 40 + + cp if newer + try: time deletet = last time present in StateFile, else time deleted = 0 (~never existed) +halign=left + + + + UMLState + + 1280 + 1930 + 70 + 40 + + File +bg=red +group=3 + + + + UMLState + + 1280 + 1890 + 70 + 40 + + File +bg=green +group=3 + + + + UMLState + + 1570 + 1890 + 70 + 40 + + File +bg=yellow +group=4 + + + + UMLState + + 1640 + 1930 + 70 + 40 + + File +bg=green +group=4 + + + + UMLState + + 1640 + 1890 + 70 + 40 + + File +bg=yellow +group=4 + + + + UMLState + + 1570 + 1930 + 70 + 40 + + File +bg=red +group=4 + + + + UMLObject + + 850 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1140 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1210 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 920 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 680 + 2310 + 150 + 40 + + otherDirectory + + + + UMLObject + + 680 + 2220 + 150 + 40 + + this.Directory + + + + UMLState + + 1140 + 2220 + 70 + 40 + + File +bg=red + + + + UMLState + + 1050 + 2320 + 70 + 40 + + File +bg=green + + + + UMLState + + 890 + 2220 + 70 + 40 + + File + + + + UMLObject + + 1290 + 2220 + 80 + 140 + + result + + + + UMLObject + + 970 + 2220 + 70 + 140 + + time +of +last +lool + + + + UMLState + + 1380 + 2320 + 70 + 40 + + File +bg=green + + + + UMLState + + 1380 + 2220 + 70 + 40 + + File +bg=green + + + + UMLObject + + 690 + 2590 + 150 + 40 + + otherDirectory + + + + UMLObject + + 690 + 2500 + 150 + 40 + + this.Directory + + + + UMLState + + 1270 + 2500 + 70 + 40 + + File +bg=red + + + + UMLState + + 980 + 2600 + 70 + 40 + + File +bg=green + + + + UMLState + + 900 + 2500 + 70 + 40 + + File + + + + UMLObject + + 1430 + 2500 + 80 + 140 + + result + + + + UMLObject + + 1070 + 2500 + 70 + 140 + + time +of +last +lool + + + + UMLState + + 1520 + 2500 + 70 + 40 + + File +bg=red + + + + UMLState + + 1520 + 2600 + 70 + 40 + + File +bg=red + + + + UMLObject + + 680 + 2150 + 720 + 30 + + Deleted Files are tracked by their last existance in a StateFile. + + + + UMLObject + + 990 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1060 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLState + + 1160 + 2500 + 70 + 40 + + File +bg=green + + + + UMLState + + 1160 + 2600 + 70 + 40 + + File +bg=green + + + + UMLObject + + 1360 + 2500 + 70 + 140 + + current +loop + + + + UMLObject + + 1220 + 2220 + 70 + 140 + + current +loop + + + + Relation + + 910 + 2190 + 280 + 50 + + lt=- + 10.0;30.0;10.0;10.0;260.0;10.0;260.0;30.0 + + + Relation + + 1180 + 2530 + 140 + 160 + + lt=<- +comparison >= + 10.0;110.0;10.0;140.0;120.0;140.0;120.0;10.0 + + + UMLObject + + 1280 + 2060 + 70 + 40 + + RED +bg=gray + + + + UMLObject + + 1350 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1430 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1500 + 2060 + 70 + 40 + + YES +bg=green + + + + UMLObject + + 1570 + 2060 + 70 + 40 + + RED +bg=gray + + + + UMLObject + + 1640 + 2060 + 70 + 40 + + RED +bg=gray + + + + Relation + + 910 + 2250 + 200 + 160 + + lt=<- +comparison >= + 10.0;10.0;10.0;140.0;180.0;140.0;180.0;110.0 + + + UMLState + + 990 + 590 + 40 + 40 + + A +bg=red + + + + UMLState + + 1030 + 590 + 40 + 40 + + B +bg=green + + + + UMLState + + 1030 + 630 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1030 + 550 + 40 + 40 + + B +bg=red + + + + UMLState + + 1070 + 550 + 40 + 40 + + +bg=red + + + + UMLState + + 990 + 750 + 40 + 40 + + A +bg=green + + + + UMLState + + 1030 + 790 + 40 + 40 + + B +bg=green + + + + UMLState + + 1030 + 830 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1030 + 750 + 40 + 40 + + B +bg=red + + + + UMLState + + 990 + 950 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 1030 + 990 + 40 + 40 + + B +bg=green + + + + UMLState + + 1030 + 1030 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1030 + 950 + 40 + 40 + + B +bg=red + + + + UMLState + + 990 + 630 + 40 + 40 + + A +bg=red + + + + UMLState + + 990 + 550 + 40 + 40 + + A +bg=red + + + + UMLState + + 990 + 510 + 40 + 40 + + A +bg=red + + + + UMLState + + 1070 + 510 + 40 + 40 + + +bg=red + + + + UMLState + + 990 + 830 + 40 + 40 + + A +bg=green + + + + UMLState + + 990 + 790 + 40 + 40 + + A +bg=green + + + + UMLState + + 990 + 710 + 40 + 40 + + A +bg=green + + + + UMLState + + 990 + 1030 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 990 + 990 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 990 + 910 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 1070 + 750 + 40 + 40 + + +bg=red + + + + UMLState + + 1070 + 950 + 40 + 40 + + +bg=red + + + + UMLState + + 1070 + 590 + 40 + 40 + + B +bg=green + + + + UMLState + + 1070 + 790 + 40 + 40 + + B +bg=green + + + + UMLState + + 1070 + 990 + 40 + 40 + + B +bg=green + + + + UMLState + + 1070 + 630 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1070 + 830 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1070 + 1030 + 40 + 40 + + B +bg=yellow + + + + UMLState + + 1070 + 910 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 1070 + 710 + 40 + 40 + + A +bg=green + + + + UMLNote + + 1100 + 150 + 140 + 70 + + first a file is deleted + + + + Relation + + 960 + 210 + 160 + 280 + + lt=. + + 50.0;260.0;10.0;120.0;140.0;10.0 + + + UMLState + + 1030 + 510 + 40 + 40 + + B +bg=gray + + + + UMLState + + 990 + 470 + 40 + 40 + + A +bg=red + + + + UMLState + + 1070 + 470 + 40 + 40 + + +bg=red + + + + UMLState + + 990 + 670 + 40 + 40 + + A +bg=green + + + + UMLState + + 1070 + 670 + 40 + 40 + + A +bg=green + + + + UMLState + + 1030 + 710 + 40 + 40 + + B +bg=gray + + + + UMLState + + 990 + 870 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 1070 + 870 + 40 + 40 + + A +bg=yellow + + + + UMLState + + 1030 + 910 + 40 + 40 + + B +bg=gray + + + + Relation + + 1100 + 490 + 230 + 100 + + lt=. + + 10.0;80.0;210.0;10.0 + + + UMLNote + + 1040 + 0 + 140 + 70 + + there is no second file + + + + Relation + + 1100 + 510 + 320 + 120 + + lt=. + + 10.0;100.0;300.0;10.0 + + + UMLNote + + 1370 + 50 + 410 + 130 + + TEST-TABLE: +/here a is the file that is modified first/ +/and b is the file that is modified second/ +*start* +file name content +*end* +file name content + + + + UMLNote + + 1310 + 390 + 80 + 110 + + *start* +a dd a +b dd b +*end* +a - +b - + + + + UMLNote + + 1400 + 410 + 80 + 110 + + *start* +a dc a +b dc b +*end* +a dc b +b dc b + + + + UMLNote + + 1490 + 430 + 80 + 110 + + *start* +a dm a +b dm b +*end* +a dm b +b dm b + + + + Relation + + 1100 + 530 + 410 + 140 + + lt=. + + 10.0;120.0;390.0;10.0 + + + UMLNote + + 1540 + 620 + 80 + 110 + + *start* +a cd a +b cd b +*end* +a - +b - + + + + Relation + + 1100 + 720 + 460 + 70 + + lt=. + + 10.0;50.0;440.0;10.0 + + + UMLNote + + 1620 + 860 + 80 + 110 + + *start* +a md a +b md b +*end* +a - +b - + + + + Relation + + 1100 + 950 + 540 + 40 + + lt=. + + 10.0;20.0;520.0;20.0 + + + UMLNote + + 1630 + 720 + 80 + 110 + + *start* +a cc a +b cc b +*end* +a cc b +b cc b + + + + Relation + + 1100 + 800 + 550 + 50 + + lt=. + + 10.0;10.0;530.0;30.0 + +