1
0
mirror of https://github.com/rancher/os.git synced 2025-07-16 16:11:03 +00:00

Remove integration tests

This commit is contained in:
niusmallnan 2019-02-11 23:01:32 +08:00
parent f8113a7241
commit 5e37bce795
69 changed files with 3 additions and 2462 deletions

View File

@ -40,7 +40,7 @@ RUN echo "Acquire::http { Proxy \"$APTPROXY\"; };" >> /etc/apt/apt.conf.d/01prox
########## Dapper Configuration #####################
ENV DAPPER_ENV VERSION DEV_BUILD RUNTEST DEBUG APTPROXY ENGINE_REGISTRY_MIRROR INTEGRATION_TESTS
ENV DAPPER_ENV VERSION DEV_BUILD RUNTEST DEBUG APTPROXY ENGINE_REGISTRY_MIRROR
ENV DAPPER_DOCKER_SOCKET true
ENV DAPPER_SOURCE /go/src/github.com/rancher/os
ENV DAPPER_OUTPUT ./bin ./dist ./build/initrd ./build/kernel

View File

@ -43,11 +43,6 @@ release-build:
mkdir -p dist
./.dapper release 2>&1 | tee dist/release.log
itest:
mkdir -p dist
./.dapper integration-test 2>&1 | tee dist/itest.log
grep --binary-files=text FAIL dist/itest.log || true
qcows:
cp dist/artifacts/rancheros.iso scripts/images/openstack/
cd scripts/images/openstack && \
@ -66,7 +61,7 @@ rpi64:
vmware: .dapper
mkdir -p dist
INTEGRATION_TESTS=0 ./.dapper vmware-release 2>&1 | tee dist/release.log
./.dapper vmware-release 2>&1 | tee dist/release.log
help:
@./scripts/help

View File

@ -9,12 +9,3 @@ echo TEST
./scripts/test
echo VALIDATE
./scripts/validate
# Drone servers kernel too old, and the integration tests often time out
#echo PREPARE
#./scripts/prepare
#echo PACKAGE
#./scripts/package
#echo INTEGRATION-TEST
#./scripts/integration-test

View File

@ -1,21 +0,0 @@
#!/bin/bash
# help: Run integration tests
set -ex
if [ "$INTEGRATION_TESTS" = 0 ]; then
exit 0
fi
source $(dirname $0)/version
cd $(dirname $0)/../tests
if [ ! -e "../dist/artifacts/$INITRD" ]; then
../scripts/dev
fi
if [ "$RUNTEST" != "" ]; then
RUNTEST="-check.f ${RUNTEST}"
fi
time go test -v -timeout 9999m $RUNTEST

View File

@ -17,20 +17,6 @@ echo PREPARE
echo PACKAGE
./scripts/package
if [[ "$INTEGRATION_TESTS" != "" ]]; then
if [[ "$ARCH" == "" || "$ARCH" == "amd64" ]]; then
export INTEGRATION_TESTS=1
else
export INTEGRATION_TESTS=0
fi
fi
if [[ "$INTEGRATION_TESTS" != "1" ]]; then
echo INTEGRATION-TEST
./scripts/integration-test
else
echo "Skipping integration tests"
fi
#if [[ "$ARCH" == "" || "$ARCH" == "amd64" ]]; then
## make generated changelog
#lastrelease=$(hub release | grep -v rc | head -n1 | tr -d ' \r\n')

View File

@ -6,7 +6,7 @@ cd $(dirname $0)/..
echo Running tests
PACKAGES=". $(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin|tests)' | sed -e 's!^!./!' -e 's!$!/...!')"
PACKAGES=". $(find -name '*.go' | xargs -I{} dirname {} | cut -f2 -d/ | sort -u | grep -Ev '(^\.$|.git|.trash-cache|vendor|bin)' | sed -e 's!^!./!' -e 's!$!/...!')"
if [ "$ARCH" = "amd64" ]; then
RACE="-race"

View File

@ -1,27 +0,0 @@
#cloud-config
write_files:
- path: /opt/install
permissions: "0755"
content: |
#!/bin/sh
set -ex
echo "running" > /var/log/ros-install.log
system-docker exec console ros install -i rancher/os:v1.0.1 -d /dev/vda --append "rancher.password=rancher" -f --no-reboot --debug >> /var/log/install.log 2>&1
echo "done" > /var/log/ros-install.log
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF
rancher:
services:
ros-install:
image: alpine
entrypoint: /usr/bin/ros entrypoint
command: /opt/install
labels:
io.rancher.os.scope: system
io.rancher.os.after: console
uts: host
privileged: true
volumes:
- /var/log:/var/log
volumes_from:
- all-volumes

View File

@ -1,19 +0,0 @@
#cloud-config
rancher:
network:
interfaces:
eth0:
dhcp: true
eth1:
address: 10.1.0.41/24
gateway: 10.1.0.1
mtu: 1500
dhcp: false
eth2:
address: 10.31.168.85/24
gateway: 10.31.168.1
gateway_ipv6: "fe00:1234::"
mtu: 1500
dhcp: false
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,47 +0,0 @@
#cloud-config
write_files:
- container: network
path: /var/lib/iptables/rules.sh
permissions: "0755"
owner: root:root
content: |
#!/bin/bash
set -ex
echo $@ >> /var/log/net.log
# the last line of the file needs to be a blank line or a comment
rancher:
network:
dns:
nameservers:
- 8.8.4.4
- 4.2.2.3
pre_cmds:
- /var/lib/iptables/rules.sh pre_cmds
post_cmds:
- /var/lib/iptables/rules.sh post_cmds
interfaces:
lo:
pre_up:
- /var/lib/iptables/rules.sh pre_up lo
post_up:
- /var/lib/iptables/rules.sh post_up lo
eth0:
pre_up:
- /var/lib/iptables/rules.sh pre_up eth0
post_up:
- /var/lib/iptables/rules.sh post_up eth0
eth1:
dhcp: true
pre_up:
- /var/lib/iptables/rules.sh pre_up eth1
post_up:
- /var/lib/iptables/rules.sh post_up eth1
eth2:
address: 192.168.3.13/16
mtu: 1450
pre_up:
- /var/lib/iptables/rules.sh pre_up eth2
post_up:
- /var/lib/iptables/rules.sh post_up eth2
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,15 +0,0 @@
#cloud-config
rancher:
environment:
ETCD_DISCOVERY: https://discovery.etcd.io/c2c219023108cda9529364d6d983fe13
FLANNEL_NETWORK: 10.244.0.0/16
network:
interfaces:
eth*:
dhcp: true
"mac=52:54:00:12:34:59":
address: 10.10.2.17/24
gateway: 10.10.2.2
mtu: 1500
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,102 +0,0 @@
#cloud-config
rancher:
docker:
tls: true
ca_cert: |+
-----BEGIN CERTIFICATE-----
MIIC0TCCAbmgAwIBAgIQEMQoBLQ2IMOqlCeG7l8+fzANBgkqhkiG9w0BAQsFADAS
MRAwDgYDVQQKEwdyYW5jaGVyMB4XDTE2MDYwNjE2MTYwMFoXDTE5MDUyMjE2MTYw
MFowEjEQMA4GA1UEChMHcmFuY2hlcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAND9PyJVU47CNsA5AjByvEv0KkD106JGHkQc+8lzVyTZw+TV6AvQm+Gt
jiYTgWzL+aGQXFDAK8EDSPzo0koNcFHJeQAJnCULZzm5irqwKZSMlDZSCRO0bJsm
CVpJpYlAc4wHb05nGtR3WB/XvudNWi9HuAZta7JAZ41LXCpC1VZ+K7EbSMsud1/w
86nkqEU4FeiEbObiKUWS1sQSEs9mmaVg1qaFvorQEREyfXHl+ngwA7tlbl8pF3NS
Ti1Uod746LUSoO2ZmNgmrONsOwl8GYjZNGz+q1YcqeiD9G78rd5gG9uPvEPM89Zm
pGM4iNE/NYMcWv2WcYx0qC9rLR1GwQ8CAwEAAaMjMCEwDgYDVR0PAQH/BAQDAgKs
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEmCbU+l9JilTEvF
L0bLFV3XXfN/YaC5tD3K5J2ReOGQcKuZodlpXJpYg/QbcdMbn+N58VuKtIiphU9l
oLbJx0a9mbN9PSuzOo4Ln24SVfEEAZI39BdgMH5LiTLE/7KXgqqPoCLk7dWOkiOn
QTNCJgP84PsMXcXnkZ2bcQjApvQ99kMqcl/TL9bBLCzGC0ZoG+G9dnzHjDd2WbKg
k/3gGJo6vWZD1WOYwxWAqtFEw2iWYRXmAQ1AqzJT83dLpUt1Dh3yP7/p7LAC/s1c
xW0SpP/lE1MjNc2eWAdpEgvBT6ry3WzLekaBgCRlVpkb/rCpWQp3Ocwyoj04qMdC
d59A+HI=
-----END CERTIFICATE-----
ca_key: |+
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA0P0/IlVTjsI2wDkCMHK8S/QqQPXTokYeRBz7yXNXJNnD5NXo
C9Cb4a2OJhOBbMv5oZBcUMArwQNI/OjSSg1wUcl5AAmcJQtnObmKurAplIyUNlIJ
E7RsmyYJWkmliUBzjAdvTmca1HdYH9e+501aL0e4Bm1rskBnjUtcKkLVVn4rsRtI
yy53X/DzqeSoRTgV6IRs5uIpRZLWxBISz2aZpWDWpoW+itARETJ9ceX6eDADu2Vu
XykXc1JOLVSh3vjotRKg7ZmY2Cas42w7CXwZiNk0bP6rVhyp6IP0bvyt3mAb24+8
Q8zz1makYziI0T81gxxa/ZZxjHSoL2stHUbBDwIDAQABAoIBAQCo+aobW3w0+CkG
oNF5VLuUefXUEi8sjJ8aGYknZ7+1BvHRy3ZUXzY6cXZ2qNzDl+Td0fgiPk7iP4K7
IpAs2dLP/iN8eUir1x1+WdumeJsWBdgsV4YJTZ9mjomPW+6hG+CQ/s3rSYgy88/n
5yvunudlRQqw/7XNKS/Q2XbKoMEXrXMF4yuMzhFfajw3c9boLJYpLArwau3b4UAq
Zx1tDDs5jSiCTdjySDfsbju59Fx68Pb6edeOUhKlNp22MlLRFwKPYEUI/6PCLA7h
sIoL1c3UEH4Tl64e4TgP9kIVlpB6s55cPkFnfm/XvJ14ipLnFhC3NUAWr5iNIxEi
vjP/vbgxAoGBAPnS1SYkgBsMy1BBPiglJu1OrSQsG8JVRtAfDbNGxpF5jcbjOAQV
RWqWrnVvpWt34B0cohKiM0F1YgjPUsy2fEgLr6YTk5ZCxBk4PnJqOfwpkygP7KGR
VHgJNdiX4SPTDjy1roZWnZvfxrHwKTRIhYY3VoCWMFGLYlzMEukWM++3AoGBANYn
99CWrpnxvhBuU6dKqoSwf43QOyCPDKU0uqtahw2n2BhrDO+gM0IFPh5Mi7rWhmWn
er2VXZrwXJTxUxLrCO/N68IzJp8uxEDr1mS+vTDiz5ix2+pr1BbolZOLHpUipi9x
atG1oIM8Sw6kvl8tyHvQQQNlmTHD0s51joat1AlpAoGBAOf36W0aVU1IqvxhKEr0
fFm7RS+iOUBQGImlW/5MSJLJ0GiNkPTRn3wiX+mxemL4k0PU03UD4R311cqiX5qw
E2R+XWGTKeZLJnTYcbuhgSfwnrCDYNCA9nLi8nmkRSwTjFO4y0333S7gMUoF2uyu
LjV66rpJOqJtDy9lWmXN9PmvAoGATqGINRdObom7To8jufYJXATuIKTHQPIlI3eT
3pyzn8jz6CtOKaG5kFEaeMeEOorP9/0hbQCtyNjeNXXSGc0gj+Qc30YmtSXXuzqc
kosSLiPpM1iCtbT3v52QZgcbqIh7WkobfXphwC3gJTVKDOpjhUp2xIeGUyZifZne
RgcHJpkCgYA4yfNbzKPKF4sGp7CNKPnpAsE6LmK0kWBfQQAGbe7IlD90DFLgH9vz
9erDf1oX4lrnkTtbNxbW1jrMSaAjXS6PyOr6/Qd6XoCgpcEv83Kf7/A0SUuaWTJk
yeXy5mu3kosqk+GKvaqSzVlmJG0O6awbG1BFK51xWq1LImmVSkwjjw==
-----END RSA PRIVATE KEY-----
server_cert: |+
-----BEGIN CERTIFICATE-----
MIIDDTCCAfWgAwIBAgIRAMiHeN7t0NKghK3RSflXZ5MwDQYJKoZIhvcNAQELBQAw
EjEQMA4GA1UEChMHcmFuY2hlcjAeFw0xNjA2MDYxNjE2MDBaFw0xOTA1MjIxNjE2
MDBaMBIxEDAOBgNVBAoTB3JhbmNoZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
ggEKAoIBAQD8iRzgcfhfUuurgEzefUIMeHJRu5OF1ILsekYpJKWesYhhvA47BC1+
Nm96BLbfmpp5A7F+ZNQvmO8tNBnnHXWPVbeBmDayLWRhzRkDbPWRx4q9ciIhUsNe
iAeF+iAVJ+S7XTFnRPY7NS+boisuaNG1ecA4XIH/dRmd50DfGfvv6Ntv22ffV1pA
2vmqIT0O19Bw60jIB7UJSUFofPmpo60TJH7wFusqwttCXjbHbOz/+iKP+eKLksMa
6oYdwd+hZyHqNMCDDEryQjsnUW9+1IoVattaa/2Y+/aWaczNzbcI2xcrG76lHnD7
Gqj8rthzv+0XP63cq5dG/KIyo11TcEXNAgMBAAGjXjBcMA4GA1UdDwEB/wQEAwID
qDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADAd
BgNVHREEFjAUgglsb2NhbGhvc3SCASqHBH8AAAEwDQYJKoZIhvcNAQELBQADggEB
AHVIh+WjfMM71PJz+fEdAIhWaxKpv9x27ZcWkReIprxdO+2s7ltZgyFpZgAGn5Zo
TSMfKkuCbjni0j+dhgWzrExVDF0sbyyYmnpskykA1lC4CLuPvdrXt55Kje/ZUmPO
B7vfWjDeae+p3iZ9sXRcJTNhIO2GtA+gKE+9PkNRG1X9H2EOvVkZoDDaxaMZVU85
XteKadiTwSiKkopRyyM9uhOPVg1nFtUcC4M+p1NgdSqp2gccpf6fLYocnrJrvuaG
ci0e+nDcgYYXGj9Cl1OxDA0QIWuhWBKZPdS4RNwu8boONMqM+CGe8CibbFKBEt2R
ZiC3i7FAxsmSVLItyaRB8EI=
-----END CERTIFICATE-----
server_key: |+
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA/Ikc4HH4X1Lrq4BM3n1CDHhyUbuThdSC7HpGKSSlnrGIYbwO
OwQtfjZvegS235qaeQOxfmTUL5jvLTQZ5x11j1W3gZg2si1kYc0ZA2z1kceKvXIi
IVLDXogHhfogFSfku10xZ0T2OzUvm6IrLmjRtXnAOFyB/3UZnedA3xn77+jbb9tn
31daQNr5qiE9DtfQcOtIyAe1CUlBaHz5qaOtEyR+8BbrKsLbQl42x2zs//oij/ni
i5LDGuqGHcHfoWch6jTAgwxK8kI7J1FvftSKFWrbWmv9mPv2lmnMzc23CNsXKxu+
pR5w+xqo/K7Yc7/tFz+t3KuXRvyiMqNdU3BFzQIDAQABAoIBAQDUiMDY1JJoB214
ZP5MsbaIsEXmK6u4kmWtiCrMLZ+Fs3xIZPDFEnsHIeEoHBeckI05E7ap3UoG1PtW
W+cA73YlL8rFMsm1oyY8eVR34Ze7HOjTD99RlEoAoRNT2nJt26lRVtlhRFTG97gd
j5ov8N+tj84KoTB3QqJQlnOuUDwMZ41roFOLEooXSA00qDFENlpBQsEtW+3Ga5ut
INH0CQnynIqt05p24oGxaLjrnmqbEhhJtAyGNHgIJAGoEmPwtPkPcd56QDnoO1wk
4fBiHgdqUfj21rBFgsIuW3NGzHvtJXopS8kaR3NaIIBCfRxxytLgtNNNW77W54ig
MvuJZr0BAoGBAP3VnIGlVZrIBzsWgPKWyPZ2s9jVR5Ub19x+6wwaGqyH19mQaGxw
x1Wic/F4dF4qqoCwyRRkpyHmGPfChgYMEp0jff5MD2Q4JfxEtGP9agFOV0cJkJr6
pY3zSbsmft+K4NhEBVMAQfFgb5mb5eSEWl+SI/jn6ee0PyvcI2LzXZVxAoGBAP6w
qiy9wbXFtzA7RC2sBlGFyZekC81DTVSIv586kMDY8oqg34Z07s1JuQYvIlavJ9lw
e50vLW8h3O2r4dge7v6CKAlbeaRtaQfpXJRezH9YQJ9lTJoXY6W7LbnBAPcexFps
J/2rul4RSLUZPuLSpGAcYall77o3rwn9oOocL9gdAoGBAJh/Vhh5iRWFaPqxyWR0
/GU96Uyyzd+iK6x3v6S0piPTNPWrkWDc3JTxFXET6e2M+oR4MUYENnjiMUvgXP6T
EDfB0/cMIQ8XwJJvgGS2IZKJS1wNPggt33qJmFlMhlqsp+ql6wDznapzQnjptVL1
xQm31c67HcarfmxORCA1j5qxAoGAIeJBEajBL7y5LWqFHIppYMkq08jYZRuSGzAC
Rl3VSkLSqczTUCEYcClhu0fkCqJM6+nCGFxhcAqSSPB4IHelFikcyHnqCg0gTxQl
4/tku4BzQIGKmmmIMVFguPjLdxUZzGndPCtvpPopsSZFromVos/D0nSkWyLzX6Hl
mZ/cYaUCgYEA2xufKaPgEdYcuI1rYKHWvhb0DI6QRK/0EfPbo6jkSdpYPBXfJ61F
JkGZVxqZI7r/U55RMmdgCpRAZCISCOm0jepaR32v5Ckan88UTyu8EuXNhvMK2jWP
DJ+16tv9ZXGwkAVJNpVv0Ze6E4yiNZz3Nuq16nBR5QeQmQSGOwbMRRI=
-----END RSA PRIVATE KEY-----
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,5 +0,0 @@
#cloud-config
rancher:
console: debian
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,6 +0,0 @@
#cloud-config
rancher:
docker:
engine: docker-1.12.6
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,32 +0,0 @@
#cloud-config
rancher:
network:
interfaces:
eth0:
address: 10.0.2.15/24
gateway: 10.0.2.2
br0:
vlans: 100
eth1:
vlans: 100,200:foobar
eth1.100:
bridge: br0
br0.100:
address: 123.123.123.123/32
eth6:
bond: bond0
eth7:
bond: bond0
bond0:
bond_opts:
mode: 1
address: 123.123.123.124/32
dns:
search:
- mydomain.com
- example.com
nameservers:
- 208.67.222.123
- 208.67.220.123
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,5 +0,0 @@
#cloud-config
rancher:
cloud_init:
datasources:
- url:https://gist.githubusercontent.com/joshwget/0bdc616cd26162ad87c535644c8b1ef6/raw/8cce947c08cf006e932b71d92ddbb96bae8e3325/gistfile1.txt

View File

@ -1,18 +0,0 @@
#cloud-config
rancher:
environment:
A: A
BB: BB
BC: BC
services:
env:
image: busybox
command: env
labels:
io.rancher.os.scope: system
io.rancher.os.before: console
environment:
- A
- B*
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,18 +0,0 @@
#cloud-config
rancher:
environment:
A: A
BB: BB
BC: BC
services:
env:
image: armhf/busybox
command: env
labels:
io.rancher.os.scope: system
io.rancher.os.before: console
environment:
- A
- B*
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUlsWAL5Rf0Wis/A7k7Tlqx0fZS60VzCZrPZYbP/wkL95jv0XzCx8bd1rZHeybblHPDNpND3BLv4qPY5DxRyexF4seGuzcJI/pOvGUGjQondeMPgDTFEo5w939gSdeTZcfXzQ0wAVhzwDbgH4zPfMzbdoo8Aiu9jkKljXw8IFju0gh+t6iKkGZCIjKT9o7zza1vGfkodhvi2V3VzPdNO28gaxZaRNtmBYUoVnGyR6nXN1Q3CJaVuh5o6GPCOqrhHNbYOFZKBpDiHbxPhVpxHQD2+8yUSGTG7WW75FfZePja5y8d0c/O5L37ZYx4AZAd3KgQYDBT2XCEJGQNawNbfpt

View File

@ -1,18 +0,0 @@
#cloud-config
rancher:
environment:
A: A
BB: BB
BC: BC
services:
env:
image: aarch64/busybox
command: env
labels:
io.rancher.os.scope: system
io.rancher.os.before: console
environment:
- A
- B*
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDUlsWAL5Rf0Wis/A7k7Tlqx0fZS60VzCZrPZYbP/wkL95jv0XzCx8bd1rZHeybblHPDNpND3BLv4qPY5DxRyexF4seGuzcJI/pOvGUGjQondeMPgDTFEo5w939gSdeTZcfXzQ0wAVhzwDbgH4zPfMzbdoo8Aiu9jkKljXw8IFju0gh+t6iKkGZCIjKT9o7zza1vGfkodhvi2V3VzPdNO28gaxZaRNtmBYUoVnGyR6nXN1Q3CJaVuh5o6GPCOqrhHNbYOFZKBpDiHbxPhVpxHQD2+8yUSGTG7WW75FfZePja5y8d0c/O5L37ZYx4AZAd3KgQYDBT2XCEJGQNawNbfpt

View File

@ -1,3 +0,0 @@
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,6 +0,0 @@
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF
rancher:
docker:
engine: docker-1.13.1

View File

@ -1,4 +0,0 @@
#cloud-config
hostname: rancher-test
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,25 +0,0 @@
#cloud-config
write_files:
- path: /var/lib/rancher/conf/cloud-config.d/cloud-config1.yml
permissions: "0444"
owner: root
content: |
hostname: hostname1
rancher:
log: false
- path: /var/lib/rancher/conf/cloud-config.d/cloud-config2.yml
permissions: "0444"
owner: root
content: |
hostname: hostname2
rancher:
debug: false
- path: /var/lib/rancher/conf/cloud-config.d/cloud-config3.yml
permissions: "0444"
owner: root
content: |
hostname: hostname3
rancher:
log: true
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,8 +0,0 @@
#cloud-config
rancher:
network:
http_proxy: invalid
https_proxy: invalid
no_proxy: invalid
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,10 +0,0 @@
#cloud-config
rancher:
console: alpine
services:
missing_image:
image: tianon/true
labels:
io.rancher.os.scope: system
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,6 +0,0 @@
#cloud-config
rancher:
services_include:
https://gist.githubusercontent.com/joshwget/a8dd813f35cee3cf562de4454217a533/raw/5a991bb8c37bf2a1a405f5a898231d925a78ad3d/gistfile1.txt: true
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,7 +0,0 @@
#cloud-config
rancher:
sysctl:
kernel.domainname: test
dev.cdrom.debug: 1
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,5 +0,0 @@
#cloud-config
mounts:
- [ /dev/vdb, "", swap, "" ]
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,6 +0,0 @@
#cloud-config
rancher:
services_include:
kernel-headers: true
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,12 +0,0 @@
#cloud-config
write_files:
- path: /test
content: test
mounts:
- ["/test", "/home/rancher/test", "", "bind"]
- [/dev/vdb, /home/rancher/a, ext4, ""]
- [/dev/vdb, /home/rancher/b, "", ""]
- [/dev/vdb, /home/rancher/c, auto, defaults]
- [/dev/vdb, /home/rancher/d, "auto", "defaults"]
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,30 +0,0 @@
#cloud-config
write_files:
- path: "/test"
permissions: "0644"
owner: "root"
content: |
console content
- path: "/test2"
container: console
permissions: "0644"
owner: "root"
content: |
console content
- path: "/test"
container: ntp
permissions: "0644"
owner: "root"
content: |
ntp content
- path: "/test"
container: syslog
permissions: "0644"
owner: "root"
content: |
syslog content
rancher:
restart_services: [syslog]
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,7 +0,0 @@
#cloud-config
rancher:
console: debian
docker:
engine: docker-17.06.1-ce
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,32 +0,0 @@
#cloud-config
write_files:
- path: /usr/bin/test
permissions: "0755"
owner: root
content: |
#!/bin/bash
touch /home/rancher/test1
- path: /opt/rancher/bin/start.sh
permissions: "0755"
owner: root
content: |
touch /home/rancher/test3
- path: /etc/rc.local
permissions: "0755"
owner: root
content: |
wait-for-docker
docker run -d nginx
- path: /var/lib/rancher/conf/cloud-config-script
permissions: "0755"
owner: root
content: |
#!/bin/bash
touch /home/rancher/test4
runcmd:
- []
- [ test ]
- [ touch, /home/rancher/test2 ]
- echo "" > /home/rancher/test5
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,5 +0,0 @@
#cloud-config
rancher:
modules: [btrfs]
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC85w9stZyiLQp/DkVO6fqwiShYcj1ClKdtCqgHtf+PLpJkFReSFu8y21y+ev09gsSMRRrjF7yt0pUHV6zncQhVeqsZtgc5WbELY2DOYUGmRn/CCvPbXovoBrQjSorqlBmpuPwsStYLr92Xn+VVsMNSUIegHY22DphGbDKG85vrKB8HxUxGIDxFBds/uE8FhSy+xsoyT/jUZDK6pgq2HnGl6D81ViIlKecpOpWlW3B+fea99ADNyZNVvDzbHE5pcI3VRw8u59WmpWOUgT6qacNVACl8GqpBvQk8sw7O/X9DSZHCKafeD9G5k+GYbAUz92fKWrx/lOXfUXPS3+c8dRIF

View File

@ -1,13 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestBadState(c *C) {
s.RunQemu(c, "--no-format", "--append", "rancher.state.dev=LABEL=BAD_STATE")
s.CheckCall(c, "mount | grep /var/lib/docker | grep rootfs")
}
func (s *QemuSuite) TestBadStateWithWait(c *C) {
s.RunQemu(c, "--no-format", "--append", "rancher.state.dev=LABEL=BAD_STATE", "--append", "rancher.state.wait")
s.CheckCall(c, "mount | grep /var/lib/docker | grep rootfs")
}

View File

@ -1,26 +0,0 @@
package integration
import . "gopkg.in/check.v1"
// NOTE: the boot2docker magic string/tar file is also used by Docker-machine
func (s *QemuSuite) TestBoot2DockerState(c *C) {
s.RunQemu(c, "--fresh", "--b2d")
s.CheckCall(c, "blkid | grep B2D_STATE")
// And once I make run create a tar file, check that its untarred in the docker user's home dir
// And confirm if it should add to the dir, or replace, i can't remember
}
func (s *QemuSuite) TestIsoBoot2DockerState(c *C) {
s.RunQemu(c, "--fresh", "--b2d", "--iso")
s.CheckCall(c, "blkid | grep B2D_STATE")
s.CheckCall(c, "sudo ros config get rancher.state.dev | grep LABEL=B2D_STATE")
s.CheckCall(c, "sudo ros config get rancher.state.autoformat | grep vda")
// And once I make run create a tar file, check that its untarred in the docker user's home dir
// And confirm if it should add to the dir, or replace, i can't remember
}
func (s *QemuSuite) TestRancherOSState(c *C) {
s.RunQemu(c, "--fresh")
s.CheckCall(c, "blkid | grep RANCHER_STATE")
}

View File

@ -1,10 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestCloudConfigHostname(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_13/cloud-config.yml")
s.CheckCall(c, "hostname | grep rancher-test")
s.CheckCall(c, "cat /etc/hosts | grep rancher-test")
}

View File

@ -1,39 +0,0 @@
package integration
import (
"time"
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestCloudConfigInstall(c *C) {
s.RunQemu(c,
"--iso",
"--fresh",
"--no-format",
"--cloud-config", "./tests/assets/cloud_config_install_test/cloud-config.yml")
//check we have a particular version, from iso
s.CheckOutput(c, " Backing Filesystem: tmpfs\n", Equals, "sudo system-docker info | grep Filesystem")
//and no persistence yet
//s.CheckOutput(c, "\n", Equals, "sudo blkid")
// TODO: need some way to wait for install to complete.
time.Sleep(time.Second)
for {
result, _ := s.MakeCall("cat", "/var/log/ros-install.log")
if result == "done\n" {
break
}
time.Sleep(time.Second * 3)
}
//check we have persistence and that ros-install completed ok
s.CheckOutput(c, "/dev/vda1:\n", Equals, "sudo blkid | grep RANCHER_STATE | cut -d ' ' -f 1")
s.CheckOutput(c, "LABEL=\"RANCHER_STATE\"\n", Equals, "sudo blkid | grep vda1 | cut -d ' ' -f 2")
//reboot, and check we're using the new non-iso install
s.Stop(c)
s.RunQemuWith(c, "--qemu", "--boothd", "--no-rm-usr")
s.CheckOutput(c, "/dev/vda1:\n", Equals, "sudo blkid | grep RANCHER_STATE | cut -d ' ' -f 1")
s.CheckOutput(c, "LABEL=\"RANCHER_STATE\"\n", Equals, "sudo blkid | grep vda1 | cut -d ' ' -f 2")
s.CheckOutput(c, " Backing Filesystem: extfs\n", Equals, "sudo system-docker info | grep Filesystem")
}

View File

@ -1,40 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestReadDatasourcesFromDisk(c *C) {
s.RunQemu(c, "--debug")
s.CheckCall(c, `
sudo tee /var/lib/rancher/conf/cloud-config.d/datasources.yml << EOF
rancher:
cloud_init:
datasources:
- url:https://gist.githubusercontent.com/joshwget/e1c49f8b1ddeeba01bc9d0a3be01ed60/raw/9168b380fde182d53acea487d49b680648a0ca5b/gistfile1.txt
EOF
`)
s.Reboot(c)
s.CheckCall(c, "sudo ros config get rancher.log | grep true")
}
func (s *QemuSuite) TestIsoCloudConfig(c *C) {
runArgs := []string{
"--fresh",
"--cloud-config-iso",
}
s.RunQemuWith(c, runArgs...)
s.CheckCall(c, `ls .ssh/authorized_keys`)
}
func (s *QemuSuite) TestFatCloudConfig(c *C) {
runArgs := []string{
"--fresh",
"--cloud-config-fat",
}
s.RunQemuWith(c, runArgs...)
s.CheckCall(c, `ls .ssh/authorized_keys`)
}

View File

@ -1,61 +0,0 @@
package integration
import (
. "gopkg.in/check.v1"
"fmt"
"strings"
)
func (s *QemuSuite) TestElideCmdLine(c *C) {
extra := "cc.hostname=nope rancher.password=three"
runArgs := []string{
"--fresh",
"--append",
"cc.something=yes rancher.password=two",
"--append-init",
extra,
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, "nope\n", Equals, "hostname")
cmdline := s.CheckOutput(c, "", Not(Equals), "cat /proc/cmdline")
if strings.Contains(cmdline, extra) {
c.Errorf("/proc/cmdline (%s) contains info that should be elided (%s)", cmdline, extra)
}
s.CheckOutput(c,
fmt.Sprintf("/init %s\n", extra),
Equals,
"sudo ros config get rancher.environment.EXTRA_CMDLINE",
)
// TODO: it seems that rancher.password and rancher.autologin are in `ros config export`, but accessible as `ros config get`
s.CheckOutput(c, "\n", Equals, "sudo ros config get rancher.password")
s.CheckOutput(c,
"EXTRA_CMDLINE: /init cc.hostname=nope rancher.password=three\n"+
" EXTRA_CMDLINE: /init cc.hostname=nope rancher.password=three\n"+
" password: three\n",
Equals,
"sudo ros config export | grep password",
)
// And then add a service.yml file example.
s.CheckCall(c,
`echo 'test:
image: alpine
command: echo "tell me a secret ${EXTRA_CMDLINE}"
labels:
io.rancher.os.scope: system
environment:
- EXTRA_CMDLINE
' > test.yml`)
s.CheckCall(c, "sudo mv test.yml /var/lib/rancher/conf/test.yml")
s.CheckCall(c, "sudo ros service enable /var/lib/rancher/conf/test.yml")
s.CheckCall(c, "sudo ros service up test")
s.CheckOutput(c,
"test_1 | tell me a secret /init cc.hostname=nope rancher.password=three\n",
Equals,
"sudo ros service logs test | grep secret",
)
// TODO: add a test showing we have the right password set
}

View File

@ -1,285 +0,0 @@
package integration
import (
"fmt"
"os"
"os/exec"
"runtime"
"strings"
"testing"
"time"
"github.com/gbazil/telnet"
. "gopkg.in/check.v1"
)
func Test(t *testing.T) { TestingT(t) }
func init() {
Suite(&QemuSuite{
runCommand: "../scripts/run",
sshCommand: "../scripts/ssh",
qemuCmd: nil,
})
}
var (
BusyboxImage = map[string]string{
"amd64": "busybox",
"arm": "armhf/busybox",
"arm64": "aarch64/busybox",
}[runtime.GOARCH]
NginxImage = map[string]string{
"amd64": "nginx",
"arm": "armhfbuild/nginx",
"arm64": "armhfbuild/nginx",
}[runtime.GOARCH]
Version = os.Getenv("VERSION")
Suffix = os.Getenv("SUFFIX")
)
type QemuSuite struct {
runCommand string
sshCommand string
qemuCmd *exec.Cmd
netConsole telnet.Telnet
}
func (s *QemuSuite) TearDownTest(c *C) {
if s.qemuCmd != nil {
s.Stop(c)
}
time.Sleep(time.Second)
}
// RunQemuWith requires user to specify all the `scripts/run` arguments
func (s *QemuSuite) RunQemuWith(c *C, additionalArgs ...string) error {
err := s.runQemu(c, additionalArgs...)
c.Assert(err, IsNil)
err = s.WaitForSSH()
c.Assert(err, IsNil)
return err
}
func (s *QemuSuite) RunQemu(c *C, additionalArgs ...string) error {
runArgs := []string{
"--qemu",
"--no-rebuild",
"--no-rm-usr",
"--fresh",
}
runArgs = append(runArgs, additionalArgs...)
err := s.RunQemuWith(c, runArgs...)
c.Assert(err, IsNil)
return err
}
func (s *QemuSuite) RunQemuInstalled(c *C, additionalArgs ...string) error {
runArgs := []string{
"--fresh",
}
runArgs = append(runArgs, additionalArgs...)
err := s.RunQemu(c, runArgs...)
c.Assert(err, IsNil)
return err
}
// RunQemuWithNetConsole requires user to specify all the `scripts/run` arguments
func (s *QemuSuite) RunQemuWithNetConsole(c *C, additionalArgs ...string) error {
runArgs := []string{
"--netconsole",
}
runArgs = append(runArgs, additionalArgs...)
err := s.runQemu(c, runArgs...)
c.Assert(err, IsNil)
time.Sleep(500 * time.Millisecond)
// start telnet, and wait for prompt
for i := 0; i < 20; i++ {
s.netConsole, err = telnet.DialTimeout("127.0.0.1:4444", 5*time.Second)
if err == nil {
fmt.Printf("t%d SUCCEEDED\n", i)
break
}
fmt.Printf("t%d", i)
time.Sleep(500 * time.Millisecond)
}
c.Assert(err, IsNil)
for i := 0; i < 20; i++ {
time.Sleep(1 * time.Second)
res := s.NetCall("uname")
if strings.Contains(res, "Linux") {
fmt.Printf("W%d SUCCEEDED(%s)\n", i, res)
break
}
}
s.NetCall("ip a")
s.NetCall("cat /proc/cmdline")
return err
}
func (s *QemuSuite) NetCall(cmd string) string {
s.netConsole.Write(cmd + "\n")
r, err := s.netConsole.Read("\n")
fmt.Printf("cmd> %s", r)
result := ""
r = ""
for err == nil {
r, err = s.netConsole.Read("\n")
fmt.Printf("\t%s", r)
result = result + r
}
fmt.Printf("\n")
// Note, if the result contains something like "+ cmd\n", you may have set -xe on
return result
}
func (s *QemuSuite) NetCheckCall(c *C, additionalArgs ...string) {
out := s.NetCall(strings.Join(additionalArgs, " "))
c.Assert(out, Not(Equals), "")
}
func (s *QemuSuite) NetCheckOutput(c *C, result string, check Checker, additionalArgs ...string) string {
out := s.NetCall(strings.Join(additionalArgs, " "))
out = strings.Replace(out, "\r", "", -1)
c.Assert(out, check, result)
return out
}
func (s *QemuSuite) runQemu(c *C, args ...string) error {
c.Assert(s.qemuCmd, IsNil) // can't run 2 qemu's at once (yet)
time.Sleep(time.Second)
s.qemuCmd = exec.Command(s.runCommand, args...)
if os.Getenv("DEBUG") != "" {
s.qemuCmd.Stdout = os.Stdout
s.qemuCmd.Stderr = os.Stderr
}
if err := s.qemuCmd.Start(); err != nil {
return err
}
fmt.Printf("--- %s: starting qemu %s, %v\n", c.TestName(), s.runCommand, args)
return nil
}
func (s *QemuSuite) WaitForSSH() error {
sshArgs := []string{
"--qemu",
"true",
}
var err error
for i := 0; i < 100; i++ {
cmd := exec.Command(s.sshCommand, sshArgs...)
if err = cmd.Run(); err == nil {
break
}
fmt.Printf("s%d", i)
time.Sleep(time.Second)
}
if err != nil {
return fmt.Errorf("Failed to connect to SSH: %v", err)
}
sshArgs = []string{
"--qemu",
"docker",
"version",
">/dev/null",
"2>&1",
}
for i := 0; i < 20; i++ {
cmd := exec.Command(s.sshCommand, sshArgs...)
if err = cmd.Run(); err == nil {
return nil
}
fmt.Printf("d%d", i)
time.Sleep(500 * time.Millisecond)
}
return fmt.Errorf("Failed to check Docker version: %v", err)
}
func (s *QemuSuite) MakeCall(additionalArgs ...string) (string, error) {
sshArgs := []string{
"--qemu",
}
sshArgs = append(sshArgs, additionalArgs...)
cmd := exec.Command(s.sshCommand, sshArgs...)
cmd.Stderr = os.Stderr
out, err := cmd.Output()
str := string(out)
fmt.Println(str)
return str, err
}
func (s *QemuSuite) CheckCall(c *C, additionalArgs ...string) {
_, err := s.MakeCall(additionalArgs...)
c.Assert(err, IsNil)
}
func (s *QemuSuite) CheckOutput(c *C, result string, check Checker, additionalArgs ...string) string {
out, err := s.MakeCall(additionalArgs...)
c.Assert(err, IsNil)
c.Assert(out, check, result)
return out
}
func (s *QemuSuite) CheckOutputContains(c *C, result string, additionalArgs ...string) string {
out, err := s.MakeCall(additionalArgs...)
c.Assert(err, IsNil)
c.Assert(strings.Contains(out, result), Equals, true)
return out
}
func (s *QemuSuite) Stop(c *C) {
fmt.Printf("%s: stopping qemu\n", c.TestName())
//s.MakeCall("sudo poweroff")
time.Sleep(1000 * time.Millisecond)
//c.Assert(s.WaitForSSH(), IsNil)
fmt.Printf("%s: stopping qemu 2\n", c.TestName())
c.Assert(s.qemuCmd.Process.Kill(), IsNil)
fmt.Printf("%s: stopping qemu 3\n", c.TestName())
s.qemuCmd.Process.Wait()
time.Sleep(time.Second)
s.qemuCmd = nil
fmt.Printf("--- %s: qemu stopped", c.TestName())
}
func (s *QemuSuite) Reboot(c *C) {
fmt.Printf("--- %s: qemu reboot", c.TestName())
s.MakeCall("sudo reboot")
time.Sleep(3000 * time.Millisecond)
c.Assert(s.WaitForSSH(), IsNil)
}
func (s *QemuSuite) LoadInstallerImage(c *C) {
cmd := exec.Command("sh", "-c", fmt.Sprintf("docker save rancher/os:%s%s | ../scripts/ssh --qemu sudo system-docker load", Version, Suffix))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
c.Assert(cmd.Run(), IsNil)
}
func (s *QemuSuite) PullAndLoadImage(c *C, image string) {
cmd := exec.Command("sh", "-c", fmt.Sprintf("docker pull %s", image))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
c.Assert(cmd.Run(), IsNil)
cmd = exec.Command("sh", "-c", fmt.Sprintf("docker save %s | ../scripts/ssh --qemu sudo system-docker load", image))
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
c.Assert(cmd.Run(), IsNil)
}

View File

@ -1,73 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestCloudConfigConsole(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_03/cloud-config.yml")
s.CheckCall(c, "apt-get --version")
s.CheckCall(c, `
sudo ros console list | grep default | grep disabled
sudo ros console list | grep debian | grep current`)
}
func (s *QemuSuite) TestConsoleCommand(c *C) {
s.RunQemu(c)
s.CheckCall(c, `
sudo ros console list | grep default | grep current
sudo ros console list | grep debian | grep disabled
(sudo ros console switch invalid 2>&1 || true) | grep "invalid is not a valid console"
(sudo ros console enable invalid 2>&1 || true) | grep "invalid is not a valid console"`)
s.MakeCall("sudo ros console switch -f debian")
c.Assert(s.WaitForSSH(), IsNil)
s.CheckCall(c, "apt-get --version")
s.CheckCall(c, `
sudo ros console list | grep default | grep disabled
sudo ros console list | grep debian | grep current`)
s.Reboot(c)
s.CheckCall(c, "apt-get --version")
s.CheckCall(c, `
sudo ros console list | grep default | grep disabled
sudo ros console list | grep debian | grep current`)
s.MakeCall("sudo ros console switch -f default")
c.Assert(s.WaitForSSH(), IsNil)
s.CheckCall(c, `
sudo ros console list | grep default | grep current
sudo ros console list | grep debian | grep disabled`)
s.CheckCall(c, "sudo ros console enable debian")
s.CheckCall(c, "sudo ros console list | grep default | grep current")
s.CheckCall(c, "sudo ros console list | grep debian | grep enabled")
s.Reboot(c)
s.CheckCall(c, `
sudo ros console list | grep default | grep disabled
sudo ros console list | grep debian | grep current`)
}
func (s *QemuSuite) TestContainersRestartAfterConsoleSwitch(c *C) {
s.RunQemu(c)
s.CheckCall(c, `
docker run -d --restart=always nginx
docker ps | grep nginx`)
s.MakeCall("sudo ros console switch -f debian")
c.Assert(s.WaitForSSH(), IsNil)
s.CheckCall(c, "docker ps | grep nginx")
s.CheckCall(c, "sudo ros console enable default")
s.Reboot(c)
s.CheckCall(c, "docker ps | grep nginx")
}

View File

@ -1,68 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestCustomDocker(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_05/cloud-config.yml")
s.CheckCall(c, `
set -ex
docker version | grep 1.12.6
sudo ros engine list | grep 1.12.6 | grep current
(sudo ros engine switch invalid 2>&1 || true) | grep "invalid is not a valid engine"
(sudo ros engine enable invalid 2>&1 || true) | grep "invalid is not a valid engine"
docker run -d --restart=always nginx
docker ps | grep nginx`)
s.CheckCall(c, `
set -ex
sudo ros engine switch docker-1.13.1
/usr/sbin/wait-for-docker
docker version | grep 1.13.1
sudo ros engine list | grep 1.13.1 | grep current
docker ps | grep nginx`)
s.Reboot(c)
s.CheckCall(c, `
set -ex
docker version | grep 1.13.1
sudo ros engine list | grep 1.13.1 | grep current
docker ps | grep nginx`)
}
func (s *QemuSuite) TestCustomDockerInPersistentConsole(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_25/cloud-config.yml")
s.CheckCall(c, `
set -ex
apt-get --version
docker version | grep 17.06.1-ce
sudo ros engine list | grep 17.06.1-ce | grep current
docker run -d --restart=always nginx
docker ps | grep nginx`)
s.CheckCall(c, `
set -ex
sudo ros engine switch docker-1.12.6
/usr/sbin/wait-for-docker
docker version | grep 1.12.6
sudo ros engine list | grep 1.12.6 | grep current
docker ps | grep nginx`)
s.Reboot(c)
s.CheckCall(c, `
set -ex
docker version | grep 1.12.6
sudo ros engine list | grep 1.12.6 | grep current
docker ps | grep nginx`)
}

View File

@ -1,10 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestDhcpHostname(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_12/cloud-config.yml")
s.CheckCall(c, "hostname | grep rancher-dev")
s.CheckCall(c, "cat /etc/hosts | grep rancher-dev")
}

View File

@ -1,11 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestEnvironment(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_11/cloud-config.yml")
s.CheckCall(c, "sudo system-docker inspect env | grep A=A")
s.CheckCall(c, "sudo system-docker inspect env | grep BB=BB")
s.CheckCall(c, "sudo system-docker inspect env | grep BC=BC")
}

View File

@ -1,31 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestHttpProxy(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_17/cloud-config.yml")
s.CheckCall(c, `
set -x -e
sudo system-docker inspect docker | grep HTTP_PROXY=invalid
sudo system-docker inspect docker | grep HTTPS_PROXY=invalid
sudo system-docker inspect docker | grep NO_PROXY=invalid
if docker pull busybox; then
exit 1
else
exit 0
fi`)
s.Reboot(c)
s.CheckCall(c, `
set -x -e
if sudo system-docker pull busybox; then
exit 1
else
exit 0
fi`)
}

View File

@ -1,273 +0,0 @@
package integration
import (
"fmt"
"strings"
"time"
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestInstallMsDosMbr(c *C) {
// test_17 cloud config is an invalid http proxy cfg, so the installer has no network
runArgs := []string{
"--iso",
"--fresh",
"--cloud-config",
"./tests/assets/test_17/cloud-config.yml",
}
version := ""
{
s.RunQemuWith(c, runArgs...)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.CheckCall(c, `
echo "---------------------------------- generic"
set -ex
sudo parted /dev/vda print
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
sudo ros install --force --no-reboot --device /dev/vda -c config.yml --append rancher.password=rancher
sync
`)
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, version, Equals, "sudo ros -v")
s.Stop(c)
}
func (s *QemuSuite) TestInstallGptMbr(c *C) {
// ./scripts/run --no-format --append "rancher.debug=true" --iso --fresh
runArgs := []string{
"--iso",
"--fresh",
}
version := ""
{
s.RunQemuWith(c, runArgs...)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.CheckCall(c, `
echo "---------------------------------- gptsyslinux"
set -ex
sudo parted /dev/vda print
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
sudo ros install --force --no-reboot --device /dev/vda -t gptsyslinux -c config.yml
sync
`)
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, version, Equals, "sudo ros -v")
// TEST parted output? (gpt non-uefi == legacy_boot)
s.Stop(c)
}
func (s *QemuSuite) TestInstallAlpine(c *C) {
// ./scripts/run --no-format --append "rancher.debug=true" --iso --fresh
runArgs := []string{
"--iso",
"--fresh",
}
version := ""
{
s.RunQemuWith(c, runArgs...)
s.MakeCall("sudo ros console switch -f alpine")
c.Assert(s.WaitForSSH(), IsNil)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.CheckCall(c, `
set -ex
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
sudo ros install --force --no-reboot --device /dev/vda -c config.yml
sync
`)
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, version, Equals, "sudo ros -v")
s.Stop(c)
}
func (s *QemuSuite) TestAutoResize(c *C) {
runArgs := []string{
"--iso",
"--fresh",
}
version := ""
disk := "/dev/vda1\n"
size := ""
{
s.RunQemuWith(c, runArgs...)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.CheckCall(c, `
set -ex
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
sudo ros install --force --no-reboot --device /dev/vda -c config.yml --append "rancher.resize_device=/dev/vda"
sync
`)
time.Sleep(500 * time.Millisecond)
s.CheckCall(c, "sudo mount "+strings.TrimSpace(disk)+" /mnt")
size = s.CheckOutput(c, size, Not(Equals), "df -h | grep "+strings.TrimSpace(disk)+" | head -n1 | sed 's/ \\+/;/g' | cut -d ';' -f 2")
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
"--resizehd", "+20G",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, version, Equals, "sudo ros -v")
s.CheckOutput(c, disk, Equals, "blkid | cut -f 1 -d ' ' | sed 's/://'")
s.CheckOutput(c, size, Not(Equals), "df -h | grep "+strings.TrimSpace(disk)+" | head -n1 | sed 's/ \\+/;/g' | cut -d ';' -f 2")
s.Stop(c)
}
func (s *QemuSuite) KillsMyServerTestInstalledDhcp(c *C) {
// ./scripts/run --no-format --append "rancher.debug=true" --iso --fresh
runArgs := []string{
"--iso",
"--fresh",
// "-net", "nic,vlan=0,model=virtio",
// "-net", "user,vlan=0",
// "-net", "nic,vlan=0,model=virtio",
// "-net", "user,vlan=0",
}
version := ""
{
s.RunQemuWith(c, runArgs...)
s.MakeCall("ip a")
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.CheckCall(c, `
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
echo "rancher:" >> config.yml
echo " network:" >> config.yml
echo " interfaces:" >> config.yml
echo " eth2:" >> config.yml
echo " dhcp: true" >> config.yml
echo " eth1:" >> config.yml
echo " address: 10.0.2.253/24" >> config.yml
echo " dhcp: false" >> config.yml
echo " gateway: 10.0.2.1" >> config.yml
echo " mtu: 1500" >> config.yml
ip a
echo "==================="
cat config.yml | sudo ros config merge
sudo ros service stop network
sleep 1
sudo ros service start network
sleep 1
ip a
echo "==================="
sudo ros install --force --no-reboot --device /dev/vda -c config.yml -a "console=ttyS0 rancher.autologin=ttyS0 console=ttyS1 rancher.autologin=ttyS1 rancher.debug=true"
sync
`)
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
runArgs = []string{
"--boothd",
"-net", "nic,vlan=0,model=virtio",
"-net", "user,vlan=0",
"-net", "nic,vlan=0,model=virtio",
"-net", "user,vlan=0",
}
s.RunQemuWithNetConsole(c, runArgs...)
s.NetCheckOutput(c, version, Equals, "sudo ros -v")
s.NetCheckOutput(c, "", Not(Equals), "sh", "-c", "ip a show eth1 | grep 10.0.2..253")
s.Stop(c)
}
func (s *QemuSuite) TestConfigDhcp(c *C) {
runArgs := []string{
"--iso",
"--fresh",
"-net", "nic,vlan=0,model=virtio",
"-net", "user,vlan=0",
"-net", "nic,vlan=0,model=virtio",
"-net", "user,vlan=0",
}
version := ""
{
s.RunQemuWithNetConsole(c, runArgs...)
s.NetCall("ip a")
version = s.NetCheckOutput(c, version, Not(Equals), "sudo ros -v")
fmt.Printf("installing %s", version)
s.NetCheckCall(c, `
echo "ssh_authorized_keys:" > config.yml
echo " - $(cat /home/rancher/.ssh/authorized_keys)" >> config.yml
echo "rancher:" >> config.yml
echo " network:" >> config.yml
echo " interfaces:" >> config.yml
echo " eth2:" >> config.yml
echo " dhcp: true" >> config.yml
echo " eth1:" >> config.yml
echo " address: 10.0.2.253/24" >> config.yml
echo " dhcp: false" >> config.yml
echo " gateway: 10.0.2.1" >> config.yml
echo " mtu: 1500" >> config.yml
ip a
echo "==================="
cat config.yml | sudo ros config merge
sudo ros service stop network
sleep 1
sudo ros service start network
sleep 1
echo "==================="
sudo system-docker logs network
echo "==================="
ip a
`)
s.NetCheckOutput(c, version, Equals, "sudo ros -v")
s.NetCheckOutput(c, "", Not(Equals), "sh", "-c", "\"ip a show eth1 | grep 10.0.2.253\"")
s.Stop(c)
}
}

View File

@ -1,11 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestKernelHeaders(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_22/cloud-config.yml")
s.CheckCall(c, `
sleep 30
sudo system-docker inspect kernel-headers`)
}

View File

@ -1,11 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestLenientServiceParsing(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_19/cloud-config.yml")
s.CheckCall(c, `
sleep 5
sudo system-docker ps -a | grep test-parsing`)
}

View File

@ -1,29 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestMisc(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_01/cloud-config.yml")
s.CheckCall(c, "sudo ros env printenv FLANNEL_NETWORK | grep '10.244.0.0/16'")
s.CheckCall(c, "ps -ef | grep 'dhcpcd -M'")
s.CheckCall(c, `
set -e -x
sudo ros tls gen --server -H localhost
sudo ros tls gen
sudo ros c set rancher.docker.tls true
sudo system-docker restart docker
sleep 5
docker --tlsverify version`)
s.CheckCall(c, `
set -e -x
for i in $(pidof system-docker); do
if [ $i = 1 ]; then
found=true
fi
done
[ "$found" = "true" ]`)
}

View File

@ -1,13 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestKernelParameterModule(c *C) {
s.RunQemu(c, "--append", "rancher.modules=[btrfs]")
s.CheckCall(c, "lsmod | grep btrfs")
}
func (s *QemuSuite) TestCloudConfigModule(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_27/cloud-config.yml")
s.CheckCall(c, "lsmod | grep btrfs")
}

View File

@ -1,17 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestMounts(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_23/cloud-config.yml", "--second-drive")
s.CheckCall(c, "cat /home/rancher/test | grep test")
s.CheckCall(c, "mkdir -p /home/rancher/a /home/rancher/b /home/rancher/c")
s.CheckCall(c, "sudo mkfs.ext4 /dev/vdb")
s.CheckCall(c, "sudo cloud-init-execute")
s.CheckCall(c, "mount | grep /home/rancher/a")
s.CheckCall(c, "mount | grep /home/rancher/b")
s.CheckCall(c, "mount | grep /home/rancher/c")
s.CheckCall(c, "mount | grep /home/rancher/d")
}

View File

@ -1,56 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestNetworkFromUrl(c *C) {
netArgs := []string{"-net", "nic,vlan=0,model=virtio"}
args := []string{"--append", "rancher.debug=true rancher.password=test-me rancher.cloud_init.datasources=[url:https://gist.githubusercontent.com/joshwget/0bdc616cd26162ad87c535644c8b1ef6/raw/8cce947c08cf006e932b71d92ddbb96bae8e3325/gistfile1.txt]"}
for i := 0; i < 7; i++ {
args = append(args, netArgs...)
}
s.RunQemuWithNetConsole(c, args...)
s.NetCheckCall(c, `
cat > test-merge << "SCRIPT"
set -x -e
ip link show dev br0
ip link show dev br0.100 | grep br0.100@br0
ip link show dev eth1.100 | grep 'master br0'
SCRIPT
sudo bash test-merge`)
s.NetCheckCall(c, `
cat > test-merge << "SCRIPT"
set -x -e
cat /etc/resolv.conf | grep "search mydomain.com example.com"
cat /etc/resolv.conf | grep "nameserver 208.67.222.123"
cat /etc/resolv.conf | grep "nameserver 208.67.220.123"
SCRIPT
sudo bash test-merge`)
}
func (s *QemuSuite) TestNoNetworkCloudConfigFromUrl(c *C) {
args := []string{
"--no-network",
"--append",
"rancher.debug=true rancher.password=test-me rancher.cloud_init.datasources=[url:https://gist.githubusercontent.com/joshwget/0bdc616cd26162ad87c535644c8b1ef6/raw/8cce947c08cf006e932b71d92ddbb96bae8e3325/gistfile1.txt]",
}
s.RunQemuWithNetConsole(c, args...)
s.NetCheckCall(c, "sudo ros config get rancher.log | grep true")
}
func (s *QemuSuite) TestNoNetworkConsoleSwitch(c *C) {
args := []string{
"--no-network",
"--append",
"rancher.debug=true rancher.password=test-me rancher.console=alpine",
}
s.RunQemuWithNetConsole(c, args...)
s.NetCheckCall(c, "uname -a")
}

View File

@ -1,10 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestNetworkOnBoot(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_18/cloud-config.yml", "-net", "nic,vlan=1,model=virtio")
s.CheckCall(c, "apk --version")
s.CheckCall(c, "sudo system-docker images | grep tianon/true")
}

View File

@ -1,249 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestNetwork(c *C) {
netArgs := []string{"-net", "nic,vlan=0,model=virtio"}
args := []string{"--cloud-config", "./tests/assets/test_09/cloud-config.yml"}
for i := 0; i < 7; i++ {
args = append(args, netArgs...)
}
s.RunQemu(c, args...)
s.CheckCall(c, `
cat > test-merge << "SCRIPT"
set -x -e
ip link show dev br0
ip link show dev br0.100 | grep br0.100@br0
ip link show dev eth1.100 | grep 'master br0'
ip link show dev eth6 | grep 'master bond0'
ip link show dev eth7 | grep 'master bond0'
[ "$(</sys/class/net/bond0/bonding/mode)" = "active-backup 1" ]
SCRIPT
sudo bash test-merge`)
s.CheckCall(c, `
cat > test-merge << "SCRIPT"
set -x -e
cat /etc/resolv.conf | grep "search mydomain.com example.com"
cat /etc/resolv.conf | grep "nameserver 208.67.222.123"
cat /etc/resolv.conf | grep "nameserver 208.67.220.123"
SCRIPT
sudo bash test-merge`)
}
func (s *QemuSuite) TestNetworkBootCfg(c *C) {
args := []string{"--append", "rancher.network.interfaces.eth1.address=10.1.0.41/24 rancher.network.interfaces.eth1.gateway=10.1.0.1 rancher.network.interfaces.eth0.dhcp=true"}
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=0,model=virtio"}...)
s.RunQemu(c, args...)
s.CheckOutput(c,
"1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1\n"+
" link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n"+
" inet 127.0.0.1/8 scope XXXX lo\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 ::1/128 scope host \n"+
" valid_lft forever preferred_lft forever\n"+
"2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth0\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3456/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet 10.1.0.41/24 scope global eth1\n"+
" valid_lft forever preferred_lft forever\n"+
"4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000\n"+
"5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000\n"+
"6: docker-sys: XXXXXXX......\n"+
" inet 172.18.42.2/16 scope global docker-sys\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 XX::XX:XX:XX:XX/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"8: docker0: XXXXXXX......\n"+
" inet 172.17.0.1/16 scope global docker0\n"+
" valid_lft forever preferred_lft forever\n",
Equals,
"ip a | "+
"grep -v ether | "+
// TODO: figure out why sometimes loopback is scope global
"sed 's/scope host lo/scope XXXX lo/g' | sed 's/scope global lo/scope XXXX lo/g' | "+
"sed 's/inet 10\\.0\\.2\\..*\\/24 brd/inet XX.XX.XX.XX\\/24 brd/' | "+
"sed 's/6: docker-sys: .*/6: docker-sys: XXXXXXX....../g' | "+
"sed 's/8: docker0: .*/8: docker0: XXXXXXX....../g' | "+
"sed '/inet6 fe80::5054:ff:fe12:.*\\/64/!s/inet6 .*\\/64 scope/inet6 XX::XX:XX:XX:XX\\/64 scope/'",
// fe80::18b6:9ff:fef5:be33
)
}
func (s *QemuSuite) TestNetworkBootAndCloudCfg(c *C) {
args := []string{
"--append", "rancher.network.interfaces.eth1.address=10.1.0.52/24 rancher.network.interfaces.eth1.gateway=10.1.0.1 rancher.network.interfaces.eth0.dhcp=true rancher.network.interfaces.eth3.dhcp=true",
"--cloud-config", "./tests/assets/multi_nic/cloud-config.yml",
}
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=0,model=virtio"}...)
s.RunQemu(c, args...)
s.CheckOutput(c,
"1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1\n"+
" link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n"+
" inet 127.0.0.1/8 scope XXXX lo\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 ::1/128 scope host \n"+
" valid_lft forever preferred_lft forever\n"+
"2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth0\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3456/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
// This shows that the boot cmdline wins over the cloud-config
// But IIRC, the cloud-init metadata wins allowing you to use ip4ll to get the hoster's metadata
// Need a test for that (presumably once we have libmachine based tests)
" inet 10.1.0.52/24 scope global eth1\n"+
" valid_lft forever preferred_lft forever\n"+
"4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet 10.31.168.85/24 scope global eth2\n"+
" valid_lft forever preferred_lft forever\n"+
// TODO: I think it would be better if this was dhcp: false, but it could go either way
"5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth3\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3459/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"6: docker-sys: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000\n"+
" inet 172.18.42.2/16 scope global docker-sys\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 XX::XX:XX:XX:XX/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"8: docker0: XXXXXXX......\n"+
" inet 172.17.0.1/16 scope global docker0\n"+
" valid_lft forever preferred_lft forever\n",
Equals,
"ip a | "+
"grep -v ether | "+
// TODO: figure out why sometimes loopback is scope global
"sed 's/scope host lo/scope XXXX lo/g' | sed 's/scope global lo/scope XXXX lo/g' | "+
"sed 's/inet 10\\.0\\.2\\..*\\/24 brd/inet XX.XX.XX.XX\\/24 brd/' | "+
"sed 's/8: docker0: .*/8: docker0: XXXXXXX....../g' | "+
"sed '/inet6 fe80::5054:ff:fe12:.*\\/64/!s/inet6 .*\\/64 scope/inet6 XX::XX:XX:XX:XX\\/64 scope/'",
// fe80::18b6:9ff:fef5:be33
)
}
func (s *QemuSuite) TestNetworkCfg(c *C) {
args := []string{"--cloud-config", "./tests/assets/multi_nic/cloud-config.yml"}
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=1,model=virtio"}...)
args = append(args, []string{"-net", "nic,vlan=0,model=virtio"}...)
s.RunQemu(c, args...)
// TODO: work out why the ipv6 loopback isn't present
// inet6 ::1/128 scope host
// valid_lft forever preferred_lft forever
// show ip a output without mac addresses
s.CheckOutput(c,
"1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1\n"+
" link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n"+
" inet 127.0.0.1/8 scope XXXX lo\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 ::1/128 scope host \n"+
" valid_lft forever preferred_lft forever\n"+
"2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth0\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3456/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet 10.1.0.41/24 scope global eth1\n"+
" valid_lft forever preferred_lft forever\n"+
"4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet 10.31.168.85/24 scope global eth2\n"+
" valid_lft forever preferred_lft forever\n"+
// TODO: I think it would be better if this was dhcp: false, but it could go either way
"5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth3\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3459/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"6: docker-sys: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000\n"+
" inet 172.18.42.2/16 scope global docker-sys\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 XX::XX:XX:XX:XX/64 scope link \n"+
" valid_lft forever preferred_lft forever\n"+
"8: docker0: XXXXXXX......\n"+
" inet 172.17.0.1/16 scope global docker0\n"+
" valid_lft forever preferred_lft forever\n",
Equals,
"ip a | "+
"grep -v ether | "+
// TODO: figure out why sometimes loopback is scope global
"sed 's/scope host lo/scope XXXX lo/g' | sed 's/scope global lo/scope XXXX lo/g' | "+
"sed 's/inet 10\\.0\\.2\\..*\\/24 brd/inet XX.XX.XX.XX\\/24 brd/' | "+
"sed 's/8: docker0: .*/8: docker0: XXXXXXX....../g' | "+
"sed '/inet6 fe80::5054:ff:fe12:.*\\/64/!s/inet6 .*\\/64 scope/inet6 XX::XX:XX:XX:XX\\/64 scope/'",
// fe80::18b6:9ff:fef5:be33
)
s.CheckOutput(c,
"Kernel IP routing table\n"+
"Destination Gateway Genmask Flags Metric Ref Use Iface\n"+
"0.0.0.0 10.1.0.1 0.0.0.0 UG 0 0 0 eth1\n"+
"0.0.0.0 10.0.2.2 0.0.0.0 UG 202 0 0 eth0\n"+
"0.0.0.0 10.0.2.2 0.0.0.0 UG 205 0 0 eth3\n"+
"10.0.2.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0\n"+
"10.0.2.0 0.0.0.0 255.255.255.0 U 205 0 0 eth3\n"+
"10.1.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1\n"+
"10.31.168.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2\n"+
"172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0\n"+
"172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker-sys\n",
Equals, "route -n")
s.CheckCall(c, "sudo ros config set rancher.network.interfaces.eth3.dhcp true")
//s.CheckCall(c, "sudo netconf")
s.Reboot(c)
s.CheckOutput(c,
"5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n"+
" inet XX.XX.XX.XX/24 brd 10.0.2.255 scope global eth3\n"+
" valid_lft forever preferred_lft forever\n"+
" inet6 fe80::5054:ff:fe12:3459/64 scope link \n"+
" valid_lft forever preferred_lft forever\n",
Equals,
"ip a show eth3 | "+
"grep -v ether | "+
// TODO: figure out why sometimes loopback is scope global
"sed 's/scope host lo/scope XXXX lo/g' | sed 's/scope global lo/scope XXXX lo/g' | "+
"sed 's/inet 10\\.0\\.2\\..*\\/24 brd/inet XX.XX.XX.XX\\/24 brd/' | "+
"sed '/inet6 fe80::5054:ff:fe12:.*\\/64/!s/inet6 .*\\/64 scope/inet6 XX::XX:XX:XX:XX\\/64 scope/'",
)
}
func (s *QemuSuite) TestNetworkCmds(c *C) {
args := []string{
"--cloud-config",
"tests/assets/pre_cmds/cloud-config.yml",
"-net", "nic,vlan=0,model=virtio",
"-net", "nic,vlan=1,model=virtio",
}
s.RunQemuWithNetConsole(c, args...)
s.NetCheckOutput(c,
"pre_cmds\n"+
"pre_up lo\n"+
"post_up lo\n"+
"pre_up eth0\n"+
"post_up eth0\n"+
"pre_up eth1\n"+
"post_up eth1\n"+
"pre_up eth2\n"+
"post_up eth2\n"+
"post_cmds\n",
Equals,
"cat /var/log/net.log",
)
}

View File

@ -1,8 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestNonexistentState(c *C) {
s.RunQemu(c, "--no-format", "--append", "rancher.state.dev=LABEL=NONEXISTENT")
s.CheckCall(c, "sudo ros config get rancher.state.dev | grep LABEL=NONEXISTENT")
}

View File

@ -1,37 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestOem(c *C) {
s.RunQemu(c, "--second-drive")
s.CheckCall(c, `
set -x
set -e
sudo mkfs.ext4 -L RANCHER_OEM /dev/vdb
sudo mount /dev/vdb /mnt
cat > /tmp/oem-config.yml << EOF
#cloud-config
rancher:
upgrade:
url: 'foo'
EOF
sudo cp /tmp/oem-config.yml /mnt
sudo umount /mnt`)
s.Reboot(c)
s.CheckCall(c, `
set -x
set -e
if [ ! -e /usr/share/ros/oem/oem-config.yml ]; then
echo Failed to find /usr/share/ros/oem/oem-config.yml
exit 1
fi
FOO="$(sudo ros config get rancher.upgrade.url)"
if [ "$FOO" != "foo" ]; then
echo rancher.upgrade.url is not foo
exit 1
fi`)
}

View File

@ -1,28 +0,0 @@
package integration
import (
. "gopkg.in/check.v1"
"strings"
)
func (s *QemuSuite) TestOsRelease(c *C) {
s.RunQemu(c)
version := ""
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
version = strings.Replace(version, "ros version ", "", 1)
s.CheckOutput(c, "VERSION="+version, Equals, "cat /etc/os-release | grep VERSION=")
s.CheckOutput(c, "NAME=\"RancherOS\"\n", Equals, "cat /etc/os-release | grep ^NAME=")
s.MakeCall("sudo ros console switch -f alpine")
c.Assert(s.WaitForSSH(), IsNil)
s.CheckOutput(c, "/sbin/apk\n", Equals, "which apk")
s.CheckOutput(c, "VERSION="+version, Equals, "cat /etc/os-release | grep VERSION=")
s.CheckOutput(c, "NAME=\"RancherOS\"\n", Equals, "cat /etc/os-release | grep ^NAME=")
s.Reboot(c)
s.CheckOutput(c, "/sbin/apk\n", Equals, "which apk")
s.CheckOutput(c, "VERSION="+version, Equals, "cat /etc/os-release | grep VERSION=")
s.CheckOutput(c, "NAME=\"RancherOS\"\n", Equals, "cat /etc/os-release | grep ^NAME=")
}

View File

@ -1,23 +0,0 @@
package integration
import (
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestPreload(c *C) {
s.RunQemu(c)
s.CheckCall(c, `
docker pull busybox
sudo docker save -o /var/lib/rancher/preload/system-docker/busybox.tar busybox
sudo gzip /var/lib/rancher/preload/system-docker/busybox.tar
sudo system-docker pull alpine
sudo system-docker save -o /var/lib/rancher/preload/docker/alpine.tar alpine`)
s.Reboot(c)
s.CheckCall(c, `
sleep 5
sudo system-docker images | grep busybox
docker images | grep alpine`)
}

View File

@ -1,87 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestRosConfig(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_14/cloud-config.yml")
s.CheckCall(c, `
set -x -e
if [ "$(sudo ros config get hostname)" == "hostname3
" ]; then
sudo ros config get hostname
exit 1
fi
sudo ros config set hostname rancher-test
if [ "$(sudo ros config get hostname)" == "rancher-test
" ]; then
sudo ros config get hostname
exit 1
fi`)
s.CheckCall(c, `
set -x -e
if [ "$(sudo ros config get rancher.log)" == "true
" ]; then
sudo ros config get rancher.log
exit 1
fi
sudo ros config set rancher.log false
if [ "$(sudo ros config get rancher.log)" == "false
" ]; then
sudo ros config get rancher.log
exit 1
fi
if [ "$(sudo ros config get rancher.debug)" == "false
" ]; then
sudo ros config get rancher.debug
exit 1
fi
sudo ros config set rancher.debug true
if [ "$(sudo ros config get rancher.debug)" == "true
" ]; then
sudo ros config get rancher.debug
exit 1
fi`)
s.CheckCall(c, `
set -x -e
sudo ros config set rancher.network.dns.search '[a,b]'
if [ "$(sudo ros config get rancher.network.dns.search)" == "- a
- b
" ]; then
sudo ros config get rancher.network.dns.search
exit 1
fi
sudo ros config set rancher.network.dns.search '[]'
if [ "$(sudo ros config get rancher.network.dns.search)" == "[]
" ]; then
sudo ros config get rancher.network.dns.search
exit 1
fi`)
s.CheckCall(c, `
set -x -e
if sudo ros config export | grep "PRIVATE KEY"; then
exit 1
fi
sudo ros config export --private | grep "PRIVATE KEY"
sudo ros config export --full | grep "udev"
sudo ros config export --private --full | grep "ntp"
sudo ros config export --full | grep "labels"
sudo ros config export --private --full | grep "PRIVATE KEY"`)
}

View File

@ -1,47 +0,0 @@
package integration
import check "gopkg.in/check.v1"
func (s *QemuSuite) TestRosLocalService(c *check.C) {
s.RunQemu(c)
// System-docker
s.CheckCall(c, `echo "FROM $(sudo system-docker images --format '{{.Repository}}:{{.Tag}}' | grep os-base)" > Dockerfile
sudo system-docker build -t testimage .`)
s.CheckCall(c, `echo "test:" > test.yml
echo " image: testimage" >> test.yml
echo " entrypoint: ls" >> test.yml
echo " labels:" >> test.yml
echo " io.rancher.os.scope: system" >> test.yml
echo " io.rancher.os.after: console" >> test.yml
`)
s.CheckCall(c, `sudo cp test.yml /var/lib/rancher/conf/test.yml`)
s.CheckCall(c, `sudo ros service enable /var/lib/rancher/conf/test.yml`)
s.CheckCall(c, `sudo ros service up test`)
s.CheckCall(c, `sudo ros service logs test | grep bin`)
}
func (s *QemuSuite) TestRosLocalServiceUser(c *check.C) {
s.RunQemu(c)
// User-docker
s.CheckCall(c, `echo "FROM alpine" > Dockerfile
sudo docker build -t testimage .`)
s.CheckCall(c, `echo "test:" > test.yml
echo " image: testimage" >> test.yml
echo " entrypoint: ls" >> test.yml
echo " labels:" >> test.yml
echo " io.rancher.os.scope: user" >> test.yml
echo " io.rancher.os.after: console" >> test.yml
`)
s.CheckCall(c, `sudo cp test.yml /var/lib/rancher/conf/test.yml`)
s.CheckCall(c, `sudo ros service enable /var/lib/rancher/conf/test.yml`)
s.CheckCall(c, `sudo ros service up test`)
s.CheckCall(c, `sudo ros service logs test | grep bin`)
}

View File

@ -1,18 +0,0 @@
package integration
import (
"fmt"
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestSharedMount(c *C) {
s.RunQemu(c)
s.CheckCall(c, fmt.Sprintf(`
set -x -e
sudo mkdir /mnt/shared
sudo touch /test
sudo system-docker run --privileged -v /mnt:/mnt:shared -v /test:/test %s mount --bind / /mnt/shared
ls /mnt/shared | grep test`, BusyboxImage))
}

View File

@ -1,37 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestSshKeyMerge(c *C) {
s.RunQemu(c)
s.CheckCall(c, `
cat > test-merge << "SCRIPT"
set -x -e
rm /var/lib/rancher/conf/cloud-config.yml
EXISTING=$(ros config get ssh_authorized_keys | head -1)
cat > /var/lib/rancher/conf/metadata << EOF
SSHPublicKeys:
"0": zero
"1": one
"2": two
EOF
ros config set hostname one
ros config set hostname two
ros config set hostname three
cat > expected << EOF
$EXISTING
- zero
- one
- two
EOF
ros config get ssh_authorized_keys > got
diff got expected
SCRIPT
sudo bash test-merge`)
}

View File

@ -1,16 +0,0 @@
package integration
import (
"fmt"
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestStartCommands(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_26/cloud-config.yml")
for i := 1; i < 6; i++ {
s.CheckCall(c, fmt.Sprintf("ls /home/rancher | grep test%d", i))
}
s.CheckCall(c, "docker ps | grep nginx")
}

View File

@ -1,12 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestSubdir(c *C) {
s.RunQemu(c, "--append", "rancher.state.directory=ros_subdir")
s.CheckCall(c, `
set -x -e
mkdir x
sudo mount $(sudo ros dev LABEL=RANCHER_STATE) x
[ -d x/ros_subdir/home/rancher ]`)
}

View File

@ -1,11 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestSwap(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_21/cloud-config.yml", "--second-drive")
s.CheckCall(c, "sudo mkswap /dev/vdb")
s.CheckCall(c, "sudo cloud-init-execute")
s.CheckCall(c, "cat /proc/swaps | grep /dev/vdb")
}

View File

@ -1,10 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestSysctl(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_20/cloud-config.yml")
s.CheckCall(c, "sudo cat /proc/sys/kernel/domainname | grep test")
s.CheckCall(c, "sudo cat /proc/sys/dev/cdrom/debug | grep 1")
}

View File

@ -1,11 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestTls(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_02/cloud-config.yml")
s.CheckCall(c, `
set -e -x
sudo ros tls gen
docker --tlsverify version`)
}

View File

@ -1,239 +0,0 @@
package integration
import (
"fmt"
"time"
"strings"
. "gopkg.in/check.v1"
)
func (s *QemuSuite) TestUpgrade050(c *C) {
// install 0.5.0, and then upgrade to `this` version
s.commonTestCode(c, "v0.5.0", "default", "")
}
func (s *QemuSuite) DISABLEDTestUpgrade061Docker1131(c *C) {
// Test that by setting the Docker version to 1.13.1 (not the default in 0.6.1), that upgrading leaves it as 1.13.1
s.commonTestCode(c, "v0.6.1", "default", "1.13.1")
}
func (s *QemuSuite) TestUpgrade061(c *C) {
s.commonTestCode(c, "v0.6.1", "debian", "")
}
func (s *QemuSuite) TestUpgrade070(c *C) {
s.commonTestCode(c, "v0.7.0", "debian", "")
}
func (s *QemuSuite) TestUpgrade071(c *C) {
s.commonTestCode(c, "v0.7.1", "default", "")
}
func (s *QemuSuite) TestUpgrade090(c *C) {
s.commonTestCode(c, "v0.9.0", "default", "")
}
func (s *QemuSuite) TestUpgrade100(c *C) {
s.commonTestCode(c, "v1.0.0", "default", "")
}
func (s *QemuSuite) TestUpgrade071Persistent(c *C) {
s.commonTestCode(c, "v0.7.1", "ubuntu", "")
}
func (s *QemuSuite) TestUpgrade080rc1(c *C) {
s.commonTestCode(c, "v0.8.0-rc1", "debian", "")
}
func (s *QemuSuite) TestUpgrade080rc7(c *C) {
// alpine console is unlikely to work before 0.8.0-rc5
s.commonTestCode(c, "v0.8.0-rc7", "alpine", "")
}
func (s *QemuSuite) TestUpgrade081Persistent(c *C) {
s.commonTestCode(c, "v0.8.1", "alpine", "")
}
func (s *QemuSuite) TestUpgrade081RollBack(c *C) {
s.commonTestCode(c, "v0.7.1", "default", "")
runArgs := []string{
"--boothd",
}
{
// and now rollback to 0.8.1
thisVersion := "v0.8.1"
s.RunQemuWith(c, runArgs...)
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", thisVersion, Suffix))
s.Reboot(c)
s.CheckOutput(c, "ros version "+thisVersion+"\n", Equals, "sudo ros -v")
s.Stop(c)
}
{
// and now re-upgrade to latest
thisVersion := Version
s.RunQemuWith(c, runArgs...)
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", thisVersion, Suffix))
s.Reboot(c)
s.CheckOutput(c, "ros version "+thisVersion+"\n", Equals, "sudo ros -v")
s.Stop(c)
}
}
// DisabledTestUpgradeInner is used to debug the above tests if they fail - the current imple of the check code limits itself to depths _one_ stacktrace
func (s *QemuSuite) DisableTestUpgradeInner(c *C) {
startWithVersion := "v0.5.0"
// CENTOS fails due to "sudo: sorry, you must have a tty to run sudo" :) so we won't test with it atm
console := "debian"
runArgs := []string{
"--iso",
"--fresh",
"--cloud-config",
"./tests/assets/test_12/cloud-config.yml",
}
version := ""
{
s.RunQemuWith(c, runArgs...)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
version = strings.TrimSpace(strings.TrimPrefix(version, "ros version"))
c.Assert(Version, Equals, version)
fmt.Printf("installing %s", startWithVersion)
s.PullAndLoadImage(c, fmt.Sprintf("rancher/os:%s", startWithVersion))
//ADD a custom append line and make sure its kept in the upgraded version too
s.CheckCall(c, fmt.Sprintf(`
echo "---------------------------------- generic"
set -ex
sudo cp /var/lib/rancher/conf/cloud-config.d/boot.yml config.yml
sudo chown rancher config.yml
sudo ros install --force --no-reboot --device /dev/vda -c config.yml --append rancher.password=rancher -i rancher/os:%s
sync
`, startWithVersion))
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, "ros version "+startWithVersion+"\n", Equals, "sudo ros -v")
if console != "default" {
// Can't preload the startWithVersion console image, as some don't exist by that name - not sure how to approach that
//s.PullAndLoadImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, startWithVersion))
// TODO: ouch. probably need to tag the dev / master version as latest cos this won't work
// Need to pull the image here - if we do it at boot, then the test will fail.
s.PullAndLoadImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc3"))
s.MakeCall(fmt.Sprintf("sudo ros console switch -f %s", console))
c.Assert(s.WaitForSSH(), IsNil)
}
consoleVer := s.CheckOutput(c, "", Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
s.LoadInstallerImage(c)
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", Version, Suffix))
s.Reboot(c)
s.CheckOutput(c, "ros version "+Version+"\n", Equals, "sudo ros -v")
s.CheckOutput(c, consoleVer, Equals, "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
// Make sure the original installed boot cmdline append value
s.CheckOutput(c, ".*rancher.password=rancher.*", Matches, "cat /proc/cmdline")
s.Stop(c)
}
func (s *QemuSuite) commonTestCode(c *C, startWithVersion, console, dockerVersion string) {
runArgs := []string{
"--iso",
"--fresh",
"--cloud-config",
fmt.Sprintf("./tests/assets/test_12/cloud-config%s.yml", dockerVersion),
}
version := ""
{
s.RunQemuWith(c, runArgs...)
version = s.CheckOutput(c, version, Not(Equals), "sudo ros -v")
version = strings.TrimSpace(strings.TrimPrefix(version, "ros version"))
c.Assert(Version, Equals, version)
s.CheckOutputContains(c, dockerVersion, "docker -v")
fmt.Printf("installing %s", startWithVersion)
s.PullAndLoadImage(c, fmt.Sprintf("rancher/os:%s", startWithVersion))
//ADD a custom append line and make sure its kept in the upgraded version too
s.CheckCall(c, fmt.Sprintf(`
echo "---------------------------------- generic"
set -ex
sudo cp /var/lib/rancher/conf/cloud-config.d/boot.yml config.yml
sudo chown rancher config.yml
sudo ros install --force --no-reboot --device /dev/vda -c config.yml --append "rancher.password=rancher rancher.cloud_init.datasources=[invalid]" -i rancher/os:%s
sync
`, startWithVersion))
time.Sleep(500 * time.Millisecond)
s.Stop(c)
}
// ./scripts/run --no-format --append "rancher.debug=true"
runArgs = []string{
"--boothd",
}
s.RunQemuWith(c, runArgs...)
s.CheckOutput(c, "ros version "+startWithVersion+"\n", Equals, "sudo ros -v")
s.CheckOutputContains(c, dockerVersion, "docker -v")
if startWithVersion != "v0.5.0" && startWithVersion != "v0.6.1" {
//s.CheckOutput(c, ".*password=ranc.*", Matches, "cat /proc/cmdline")
cmdline := s.CheckOutput(c, "", Not(Equals), "cat /proc/cmdline")
if !strings.Contains(cmdline, "rancher.password=rancher") {
c.Errorf("output(%s) does not contain(%s)", cmdline, "rancher.password=rancher")
}
if !strings.Contains(cmdline, "rancher.cloud_init.datasources=[invalid]") {
c.Errorf("output(%s) does not contain(%s)", cmdline, "rancher.cloud_init.datasources=[invalid]")
}
}
if console != "default" {
// Can't preload the startWithVersion console image, as some don't exist by that name - not sure how to approach that
//s.PullAndLoadImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, startWithVersion))
// TODO: ouch. probably need to tag the dev / master version as latest cos this won't work
// Need to pull the image here - if we do it at boot, then the test will fail.
if console == "alpine" {
s.PullAndLoadImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc5"))
} else {
s.PullAndLoadImage(c, fmt.Sprintf("rancher/os-%sconsole:%s", console, "v0.8.0-rc3"))
}
s.MakeCall(fmt.Sprintf("sudo ros console switch -f %s", console))
c.Assert(s.WaitForSSH(), IsNil)
}
consoleVer := s.CheckOutput(c, "", Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
s.LoadInstallerImage(c)
s.CheckCall(c, fmt.Sprintf("sudo ros os upgrade --no-reboot -i rancher/os:%s%s --force", Version, Suffix))
s.Reboot(c)
s.CheckOutput(c, "ros version "+Version+"\n", Equals, "sudo ros -v")
if console != "default" {
s.CheckOutput(c, consoleVer, Equals, "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
} else {
s.CheckOutput(c, consoleVer, Not(Equals), "sudo system-docker ps --filter name=^/console$ --format {{.Image}}")
}
s.CheckOutputContains(c, dockerVersion, "docker -v")
if startWithVersion != "v0.5.0" && startWithVersion != "v0.6.1" {
// Make sure the original installed boot cmdline append value
// s.CheckOutput(c, ".*rancher.password=rancher.*", Matches, "cat /proc/cmdline")
cmdline := s.CheckOutput(c, "", Not(Equals), "cat /proc/cmdline")
if !strings.Contains(cmdline, "rancher.password=rancher") {
c.Errorf("output(%s) does not contain(%s)", cmdline, "rancher.password=rancher")
}
if !strings.Contains(cmdline, "rancher.cloud_init.datasources=[invalid]") {
c.Errorf("output(%s) does not contain(%s)", cmdline, "rancher.cloud_init.datasources=[invalid]")
}
}
s.Stop(c)
}

View File

@ -1,12 +0,0 @@
package integration
import . "gopkg.in/check.v1"
func (s *QemuSuite) TestWriteFiles(c *C) {
s.RunQemu(c, "--cloud-config", "./tests/assets/test_24/cloud-config.yml")
s.CheckCall(c, "sudo cat /test | grep 'console content'")
s.CheckCall(c, "sudo cat /test2 | grep 'console content'")
s.CheckCall(c, "sudo system-docker exec ntp cat /test | grep 'ntp content'")
s.CheckCall(c, "sudo system-docker exec syslog cat /test | grep 'syslog content'")
}