summaryrefslogtreecommitdiff
path: root/test/mciproject.yml
blob: 72022fe46ecd518cc84281980c75310672fc3652 (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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#
# This file defines the tasks and platforms for WiredTiger in the
# MongoDB continuous integration system (see https://mci.mongodb.com).
#

functions:
  "fetch source" :
    command: git.get_project
    params:
      directory: wiredtiger
  "fetch binaries" : &fetch_binaries
    - command: s3.get
      params:
        aws_key: ${aws_key}
        aws_secret: ${aws_secret}
        remote_file: wiredtiger/${build_variant}/${revision}/binaries/${build_id}.tgz
        bucket: build_external
        extract_to: wiredtiger

pre:
  - command: shell.exec
    params:
      script: |
        rm -rf "wiredtiger"
post:
  - command: archive.targz_pack
    params:
      target: "wiredtiger.tgz"
      source_dir: "wiredtiger"
      include:
        - "./**"
  - command: s3.put
    params:
      aws_secret: ${aws_secret}
      aws_key: ${aws_key}
      local_file: wiredtiger.tgz
      bucket: build_external
      permissions: public-read
      content_type: application/tar
      display_name: Artifacts
      remote_file: wiredtiger/${build_variant}/${revision}/artifacts/${build_id}.tgz
  - command: shell.exec
    params:
      script: |
        rm -rf "wiredtiger"

tasks:
## Base compile task on posix flavours
  - name: compile
    depends_on: []
    commands:
      - func: "fetch source"
      - command: git.apply_patch
        params:
          directory: wiredtiger
      - command: shell.exec
        params:
          working_dir: "wiredtiger"
          script: |
            set -o errexit
            set -o verbose
            if [ "Windows_NT" = "$OS" ]; then
              scons.bat --enable-python=c:\\swigwin-3.0.2\\swig.exe --enable-diagnostic --enable-verbose ${smp_command|}
            else
              ./build_posix/reconf
              ${configure_env_vars|} ./configure --enable-diagnostic --enable-python --enable-zlib --enable-strict --enable-verbose
              ${make_command|make} ${smp_command|} 2>&1
              TESTUTIL_ENABLE_LONG_TESTS=1 ${make_command|make} VERBOSE=1 check 2>&1
            fi
      - command: archive.targz_pack
        params:
          target: "wiredtiger.tgz"
          source_dir: "wiredtiger"
          include:
             - "./**"
      - command: s3.put
        params:
          aws_secret: ${aws_secret}
          aws_key: ${aws_key}
          local_file: wiredtiger.tgz
          bucket: build_external
          permissions: public-read
          content_type: application/tar
          display_name: Binaries
          remote_file: wiredtiger/${build_variant}/${revision}/binaries/${build_id}.tgz

  - name: unit-test
    depends_on:
    - name: compile
    commands:
      - func: "fetch binaries"
      - command: shell.exec
        params:
          working_dir: "wiredtiger"
          script: |
            set -o errexit
            set -o verbose

            # On 10.12, change the binary location with install_name_tool since DYLD_LIBRARY_PATH
            # appears not to work for dynamic modules loaded by python. For wt, the libtool generated
            # script has the wrong path for running on test machines.
            if [ "$(uname -s)" == "Darwin" ]; then
              WT_VERSION=$(m4 build_posix/aclocal/version.m4)
              install_name_tool -change /usr/local/lib/libwiredtiger-$WT_VERSION.dylib $(pwd)/.libs/libwiredtiger-$WT_VERSION.dylib lang/python/_wiredtiger.so
              install_name_tool -change /usr/local/lib/libwiredtiger-$WT_VERSION.dylib $(pwd)/.libs/libwiredtiger-$WT_VERSION.dylib .libs/wt
            fi

            ${test_env_vars|} python ./test/suite/run.py -v 2 ${smp_command|} 2>&1

  - name: compile-windows-alt
    depends_on:
    - name: compile
    commands:
      - func: "fetch binaries"
      - command: shell.exec
        params:
          working_dir: "wiredtiger"
          script: |
            set -o errexit
            set -o verbose

            scons.bat ${smp_command|} "CFLAGS=/Gv /wd4090 /wd4996 /we4047 /we4024 /TC /we4100 /w4133" wiredtiger.dll libwiredtiger.lib

  - name: fops
    depends_on:
    - name: compile
    commands:
      - func: "fetch binaries"
      - command: shell.exec
        params:
          working_dir: "wiredtiger"
          script: |
            set -o errexit
            set -o verbose
            if [ "Windows_NT" = "$OS" ]; then
              cmd.exe /c t_fops.exe
            else
              ./test/fops/t
            fi

  - name: format
    depends_on:
    - name: compile
    commands:
      - func: "fetch binaries"
      - command: shell.exec
        params:
          working_dir: "wiredtiger"
          script: |
            set -o errexit
            set -o verbose
            # format assumes we run it from the format directory
            cmd.exe /c "cd test\\format && ..\\..\\t_format.exe reverse=0 encryption=none logging_compression=none runs=20"

buildvariants:
- name: ubuntu1404
  display_name: Ubuntu 14.04
  run_on:
  - ubuntu1404-test
  expansions:
    # It's ugly, but we need the absolute path here, not the relative
    test_env_vars: LD_LIBRARY_PATH=`pwd`/.libs
    smp_command: -j $(grep -c ^processor /proc/cpuinfo)
    configure_env_vars: CC=/opt/mongodbtoolchain/bin/gcc CXX=/opt/mongodbtoolchain/bin/g++
  tasks:
    - name: compile
    - name: unit-test
    - name: fops

- name: solaris
  display_name: Solaris
  run_on:
  - solaris
  expansions:
    make_command: PATH=/opt/mongodbtoolchain/bin:$PATH gmake
    test_env_vars: LD_LIBRARY_PATH=`pwd`/.libs
    smp_command: -j $(kstat cpu | sort -u | grep -c "^module")
    configure_env_vars: PATH=/opt/mongodbtoolchain/bin:$PATH CFLAGS="-m64"
  tasks:
    - name: compile
    - name: unit-test
    - name: fops

- name: windows-64
  display_name: Windows 64-bit
  run_on:
  - windows-64-vs2013-test
  tasks:
    - name: compile
    - name: compile-windows-alt
    - name: unit-test
    #- name: format  - Enable when we have a solution for hangs and crashses
    - name: fops

- name: macos-1012
  display_name: OS X 10.12
  run_on:
  - macos-1012
  expansions:
    smp_command: -j $(sysctl -n hw.logicalcpu)
    configure_env_vars: PATH=/opt/local/bin:$PATH
    make_command: PATH=/opt/local/bin:$PATH ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future make
    test_env_vars: DYLD_LIBRARY_PATH=`pwd`/.libs
  tasks:
    - name: compile
    - name: unit-test
    - name: fops