aboutsummaryrefslogtreecommitdiff
path: root/tests/agent/testscript
blob: fa465a4065fa00b14577af814d57504eb040857b (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
# file      : tests/agent/testscript
# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd
# license   : MIT; see accompanying LICENSE file

# The /build/machines directory should be on a btrfs filesystem and have the
# following layout and contents:
#
# /build/machines/
# └── default/
#     └── linux-gcc/
#         ├── linux-gcc-1.0/
#         │    └── manifest
#         └── linux-gcc-1.1/
#               └── manifest
#
# Notes:
#
#  - The test must be run serially (@@ TODO: serial directive)

test.options   = --verbose 2
test.arguments = stage 1

cp = $src_base/btrfs-cpdir -f /build/machines.orig /build/machines
rm = $src_base/btrfs-rmdir /build/machines

: dump-machines
:
{
  m = /build/machines/default/linux-gcc

  test.options += --dump-machines --fake-bootstrap

  +$cp

  : no-current-machine-symlink
  :
  $* 123 2>>"EOE"
    trace: enumerate_machines: skipping $m/: no subvolume link
    EOE

  ln -T -s linux-gcc-1.0 $m/linux-gcc-1

  : bootstrap
  :
  $* 123 >>EOO 2>>~"%EOE%d"
    : 1
    id: linux-gcc-1.0
    name: linux-gcc
    summary: Linux with GCC
    EOO
    %trace: enumerate_machines: btrfs subvolume snapshot $m/linux-gcc-1.0 $m/linux-gcc-stage-\\.+%
    trace: enumerate_machines: bootstrapping $m/linux-gcc-stage/
    EOE

  ln -T -f -s linux-gcc-1.1 $m/linux-gcc-1

  : re-bootstrap-machine
  :
  $* 123 >>EOO 2>>~"%EOE%d"
    : 1
    id: linux-gcc-1.1
    name: linux-gcc
    summary: Linux with GCC
    EOO
    %trace: enumerate_machines: btrfs subvolume snapshot $m/linux-gcc-1.1 $m/linux-gcc-stage-\\.+%
    trace: enumerate_machines: re-bootstrapping $m/linux-gcc-stage/: new machine
    trace: enumerate_machines: btrfs property set -ts $m/linux-gcc-stage ro false
    trace: enumerate_machines: btrfs subvolume delete $m/linux-gcc-stage
    EOE

  : re-bootstrap-toolchain
  :
  $* 124 >>EOO 2>>~"%EOE%d"
    : 1
    id: linux-gcc-1.1
    name: linux-gcc
    summary: Linux with GCC
    EOO
    %trace: enumerate_machines: btrfs subvolume snapshot $m/linux-gcc-1.1 $m/linux-gcc-stage-\\.+%
    trace: enumerate_machines: re-bootstrapping $m/linux-gcc-stage/: new toolchain
    trace: enumerate_machines: btrfs property set -ts $m/linux-gcc-stage ro false
    trace: enumerate_machines: btrfs subvolume delete $m/linux-gcc-stage
    EOE

  sed -i -e 's/^(bbot-version):.*/\1: 0/' $m/linux-gcc-stage/manifest

  : re-bootstrap-bbot
  :
  $* 124 >>EOO 2>>~"%EOE%d"
    : 1
    id: linux-gcc-1.1
    name: linux-gcc
    summary: Linux with GCC
    EOO
    %trace: enumerate_machines: btrfs subvolume snapshot $m/linux-gcc-1.1 $m/linux-gcc-stage-\\.+%
    trace: enumerate_machines: re-bootstrapping $m/linux-gcc-stage/: new bbot
    trace: enumerate_machines: btrfs property set -ts $m/linux-gcc-stage ro false
    trace: enumerate_machines: btrfs subvolume delete $m/linux-gcc-stage
    EOE

  sed -i -e 's/^(bbot-version):.*/\1: 99999900/' $m/linux-gcc-stage/manifest

  : re-bootstrap-bbot-newer
  :
  $* 124 2>>~"%EOE%d"
    %trace: enumerate_machines: btrfs subvolume snapshot $m/linux-gcc-1.1 $m/linux-gcc-stage-\\.+%
    trace: enumerate_machines: ignoring $m/linux-gcc-stage/: old bbot
    %trace: enumerate_machines: btrfs subvolume delete $m/linux-gcc-stage-\\.+%
    EOE

  -$rm
}