summaryrefslogtreecommitdiff
path: root/service/go
blob: 7df9111b52d29b57d2e60904322cf36c25abe21f (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#!/bin/bash

NUM_OF_CORES=''
NUM_OF_JOBS=''
TRIAL_PATH=''
TRIAL_REPORTER='verbose'

function getTrialAbsolutePath {
    TRIAL_PATH="$(which trial)"
}

function resolveNumOfCores {
        if [ "$(uname)" ==  "Darwin" ]; then
                NUM_OF_CORES="$(sysctl -n hw.ncpu)"
        else
                NUM_OF_CORES="$(nproc)"
        fi
}

function resolveNumOfJobs {
        resolveNumOfCores
        if [ "$(uname)" ==  "Darwin" ]; then
                # Somehow, the tests fail on MacOS X for NUM_OF_JOBS="$NUM_OF_CORES"
                NUM_OF_JOBS="$(($NUM_OF_CORES > 1 ? $NUM_OF_CORES / 2 : 1))"
        else
                NUM_OF_JOBS="$NUM_OF_CORES"
        fi
}

function removeZmqCertificates {
        if [ -d ~/.config/leap/events/zmq_certificates ] ; then
                echo "Removing zmq folder before running tests."
                rm -Rf ~/.config/leap/events/zmq_certificates
        fi
}

function setuppy {
        echo "Installing Pixelated User Agent."
        pip install --upgrade pip setuptools
        if [ `uname -s` = "Darwin" ]; then
                CFLAGS="-DCRYPTOPP_DISABLE_ASM=1" pip install -r requirements.txt
        else
                pip install -r requirements.txt
        fi
        pip install -r test_requirements.txt
        echo "Done."
}

function setupjs {
        echo "Installing node and bower libraries."
        cd ../web-ui
        npm install
        node_modules/bower/bin/bower install --config.interactive=false --allow-root
        LC_ALL=en_US.UTF-8 ./go build
        cd -
        echo "Done."
}

function runIntegrationTests {
        echo "Executing Integration Tests."
        resolveNumOfJobs
        trial -j $NUM_OF_JOBS --reporter=$TRIAL_REPORTER $* test.integration
        echo "Done."
}

function runUnitTests {
        echo "Executing Unit Tests."
        removeZmqCertificates
        trial --reporter=$TRIAL_REPORTER $* test.unit
        echo "Done."
}

function runPep8 {
        echo "Verifying conformation to pep8."
        pep8 pixelated test --ignore=E501
        echo "Done."
}

function runJSHint {
        echo "Executing JSHint."
        cd ../web-ui
        LC_ALL=en_US.UTF-8 ./go jshint
        cd -
        echo "Done."
}

function runCoverageUnit {
        echo "Generating Unit Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=$TRIAL_REPORTER $* test.unit
        coverage combine
        coverage html
        echo "Done."
}

function runCoverageIntegration {
        echo "Generating Integration Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=$TRIAL_REPORTER $* test.integration
        coverage combine
        coverage html
        echo "Done."
}

function runCoverageUnitAndIntegration {
        echo "Generating Unit and Integration Test Converage Information."
        coverage erase
        getTrialAbsolutePath
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=$TRIAL_REPORTER test.unit
        coverage run -p --source=pixelated $TRIAL_PATH --reporter=$TRIAL_REPORTER test.integration
        coverage combine
        coverage html
        echo "Done."
}

function runFunctionalTests {
        echo "Executing Functional Tests on headless PhantomJS."
        removeZmqCertificates
        echo "You should execute it on Debian box for more similar results with CI environment."
        behave --tags ~@wip test/functional/features
        echo "Done."
}

function cleanPyc {
    find . -name '*.pyc'  -delete
}

if [ "$1" == 'test' ]; then
        set -e
        runPep8
        runUnitTests "${@:2}"
        runIntegrationTests "${@:2}"
elif [ "$1" == 'unit' ]; then
        set -e
        cleanPyc
        runUnitTests
elif [ "$1" == 'integration' ]; then
        set -e
        cleanPyc
        runIntegrationTests
elif [ "$1" == 'pep8' ]; then
        set -e
        runPep8
elif [ "$1" == 'setuppy' ]; then
        setuppy
elif [ "$1" == 'setupjs' ]; then
        setupjs
elif [ "$1" == 'setup' ]; then
        setupjs
        setuppy "${@:2}"
elif [ "$1" == 'coverage_unit' ]; then
        runCoverageUnit "${@:2}"
elif [ "$1" == 'coverage_integration' ]; then
        runCoverageIntegration "${@:2}"
elif [ "$1" == 'coverage_all' ]; then
        set -e
        runPep8
        runCoverageUnitAndIntegration "${@:2}"
elif [ "$1" == 'start' ]; then
        /usr/bin/env pixelated-user-agent "${@:2}"
elif [ "$1" == "functional" ]; then
        runFunctionalTests "${@:2}"
else
        python setup.py $*
fi