blob: b5e46b733e612672f80565f120f1a62dc1b86fef (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
Morph Building Tests
======================
SCENARIO attempting to build a system morphology which has never been committed
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called master
AND the user creates an uncommitted system morphology called systems/base-system.morph for our architecture in system branch master
AND the user attempts to build the system systems/base-system.morph in branch master
THEN morph succeeded
FINALLY the git server is shut down
SCENARIO build system with relative path
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called master
AND the user creates an uncommitted system morphology called systems/base-system.morph for our architecture in system branch master
AND from the directory workspace/master/test/morphs/systems the user attempts to morph build the system base-system.morph
THEN morph succeeded
FINALLY the git server is shut down
SCENARIO build system with relative path (second variant)
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called master
AND the user creates an uncommitted system morphology called systems/base-system.morph for our architecture in system branch master
AND from the directory workspace/master/test/morphs/systems the user attempts to morph build the system ../systems/base-system.morph
THEN morph succeeded
FINALLY the git server is shut down
SCENARIO build system with absolute path
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called master
AND the user creates an uncommitted system morphology called systems/base-system.morph for our architecture in system branch master
AND from the directory workspace/master/test/morphs/systems the user attempts to morph build the system using the absolute path to base-system.morph
THEN morph succeeded
FINALLY the git server is shut down
System integrations
-------------------
`system-integration` is a field in chunk morphologies that allows you to
have some scripts run at system artifact construction time, because some
things need to be done after every chunk is built, such as `ldconfig`,
so every library path in `/etc/ld.so.conf` can be found, and it can look
up libraries more quickly.
SCENARIO using system integrations
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called master
AND the user attempts to build the system systems/test-system.morph in branch master
THEN morph succeeded
In our example, we have a system integration that creates /etc/passwd,
so when we deploy the system, we can check whether it exists.
GIVEN a cluster called test-cluster.morph in system branch master
AND a system in cluster test-cluster.morph in branch master called test-system
AND system test-system in cluster test-cluster.morph in branch master builds systems/test-system.morph
AND system test-system in cluster test-cluster.morph in branch master has deployment type: tar
WHEN the user attempts to deploy the cluster test-cluster.morph in branch master with options test-system.location="$DATADIR/test.tar"
THEN morph succeeded
AND tarball test.tar contains etc/passwd
FINALLY the git server is shut down
Distbuilding
------------
SCENARIO distbuilding
ASSUMING the morph-cache-server can be run
GIVEN a workspace
AND a git server
AND a communal cache server
AND a distbuild worker
AND a distbuild controller
Distbuilding works much the same way as regular building.
WHEN the user checks out the system branch called master
AND the user creates an uncommitted system morphology called systems/base-system.morph for our architecture in system branch master
THEN morph distbuild the system systems/base-system.morph of the branch master
Distbuilt systems can be deployed locally, since the building process
lets you download the artifacts for local use.
Note: Currently broken. It's currently complaining about not having
repos cached locally.
> GIVEN a cluster called test-cluster.morph in system branch master
> AND a system in cluster test-cluster.morph in branch master called test-system
> AND system test-system in cluster test-cluster.morph in branch master builds systems/base-system.morph
> AND system test-system in cluster test-cluster.morph in branch master has deployment type: sysroot
> AND system test-system in cluster test-cluster.morph in branch master has deployment location: test-system
> WHEN the user attempts to deploy the cluster test-cluster.morph in branch master
> THEN morph succeeded
> AND file workspace/master/test/morphs/test-system exists
FINALLY the distbuild controller is terminated
AND the distbuild worker is terminated
AND the communal cache server is terminated
AND the git server is shut down
Empty strata don't build
------------------------
SCENARIO empty-strata
GIVEN a workspace
AND a git server
WHEN the user checks out the system branch called empty-stratum
AND the user attempts to build the system systems/empty-stratum-system.morph in branch empty-stratum
THEN morph failed
FINALLY the git server is shut down
|