summaryrefslogtreecommitdiffstats
blob: 3530fe54dd82118e0eb01d36cf900e6dab9b4b5f (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
#!/usr/bin/env python

# Required Python libraries:
#
# pip install python-vagrant tqdm
#
# Purpose of this script:
#
# This script tests
# a) InstallSwiftDependencies.sh installs all required packages for Swift and Swiften on system and
# b) all Swift projects build successfully on the system and their tests pass.

from tqdm import tqdm
from time import sleep
import sys
import vagrant

testSystems = [
    "bento/ubuntu-16.04",
    "bento/ubuntu-15.04",
    "bento/debian-8.5",
    "bento/opensuse-leap-42.1",
    "bento/fedora-24",
    "Sabayon/spinbase-amd64"
]

progressBar = tqdm(testSystems)

successfulSystems = []
failedSystems = []

for testSystem in progressBar :
    v = vagrant.Vagrant(quiet_stdout=False)
    try :
        progressBar.set_description("create Vagrantfile for %s" % testSystem)
        with open('Vagrantfile', 'w') as vagrantfile :
            vagrantfile.write("""
Vagrant.configure("2") do |config|
    config.vm.box = "%s"

    config.ssh.insert_key = false

    config.vm.provider "virtualbox" do |v|
        v.memory = 4096
        v.cpus = 2
    end

    # This is needed because Fedora only comes with Python 3 and Ansible needs Python 2
    # on the target system for some features.
    if config.vm.box.include? "fedora"
        config.vm.provision "shell", inline: "sudo dnf install -y python2 python2-dnf libselinux-python"
    end

    if config.vm.box.include? "Sabayon"
        config.vm.provision "shell", inline: "sudo equo update && sudo env ACCEPT_LICENSE=* equo install dev-vcs/git sys-apps/lsb-release"
    end

    config.vm.synced_folder "../..", "/home/vagrant/swift-host", type: "rsync"
    config.vm.synced_folder ".", "/vagrant", type: "rsync"

    config.vm.provision "ansible" do |ansible|
        #ansible.verbose = "vvv"
        ansible.playbook = "playbook.yml"
    end
end""" % testSystem)

        progressBar.set_description("vagrant up")
        v.up(testSystem, provision=True )

        progressBar.set_description("start building swift on %s" % testSystem)
        # unset QTDIR is needed, because Fedora 24 sets QTDIR to Qt 3, even though Qt 5 is installed.
        # SCons will pick up the Qt installation from QTDIR if QTDIR is set.
        v._call_vagrant_command(["ssh", "-c", "cd /home/vagrant/swift && unset QTDIR && ./scons test=unit -j 2"])

        progressBar.set_description("vagrant destory %s" % testSystem)
        v.destroy()
        successfulSystems.append(testSystem)
    except :
        e = sys.exc_info()[0]
        print("Exception: %s" % e)
        progressBar.set_description("vagrant destory %s" % testSystem)
        v.destroy()
        failedSystems.append(testSystem)

for system in successfulSystems:
    print("SUCCESS: %s" % system)
for system in failedSystems:
    print("FAILED: %s" % system)

exit(len(failedSystems))