CI: Add realtime checks to dailies
authorGeorge Joseph <gjoseph@digium.com>
Mon, 16 Jul 2018 15:49:54 +0000 (09:49 -0600)
committerGeorge Joseph <gjoseph@digium.com>
Mon, 16 Jul 2018 15:49:54 +0000 (09:49 -0600)
Change-Id: I6dc8ab1679b3505c6dde1d47e1b9276df47814f8

tests/CI/periodic-dailyTestGroups.json
tests/CI/periodics-daily.jenkinsfile
tests/CI/runTestsuite.sh
tests/CI/setupRealtime.sh [new file with mode: 0755]

index b8c8e9b..01f51d1 100644 (file)
                "name": "othr",
                "dir": "tests/CI/output/other",
                "testcmd": " -T tests/(apps|agi|blind-transfer-parkingtimeout|rest_api|channels|realtime|example|skeleton_test|remote-test)"
+       },
+       {
+               "name": "real",
+               "dir": "tests/CI/output/realtime",
+               "runTestsuiteOptions": "--realtime",
+               "testcmd": " -t tests/channels/pjsip -G realtime-incompatible"
        }
 ]
index fd9fa6b..c879040 100644 (file)
@@ -65,6 +65,7 @@ pipeline {
                                                def groupName = testGroup.name
                                                def groupDir = testGroup.dir
                                                def groupTestcmd = testGroup.testcmd
+                                               def groupRunTestsuiteOptions = testGroup.runTestsuiteOptions
                                                def testsuiteUrl = env.GIT_URL.replaceAll(/\/(Security-)?[^\/]+$/, "/\$1testsuite")
 
                                                parallelTasks[groupName] = {
@@ -92,7 +93,7 @@ pipeline {
                                                                                        userRemoteConfigs: [[url: testsuiteUrl]]
                                                                                ]
 
-                                                                       sh "sudo tests/CI/runTestsuite.sh --testsuite-dir='${groupDir}' --test-command='${groupTestcmd}'"
+                                                                       sh "sudo tests/CI/runTestsuite.sh ${groupRunTestsuiteOptions} --testsuite-dir='${groupDir}' --test-command='${groupTestcmd}'"
 
                                                                        archiveArtifacts allowEmptyArchive: true, defaultExcludes: false, fingerprint: true,
                                                                                artifacts: "${groupDir}/asterisk-test-suite-report.xml, ${groupDir}/logs/**, ${groupDir}/core*.txt"
index d295421..35f4d58 100755 (executable)
@@ -1,11 +1,17 @@
 #!/usr/bin/env bash
 CIDIR=$(dirname $(readlink -fn $0))
+REALTIME=0
 source $CIDIR/ci.functions
 ASTETCDIR=$DESTDIR/etc/asterisk
 
 pushd $TESTSUITE_DIR
 
 ./cleanup-test-remnants.sh
+
+if [ $REALTIME -eq 0 ] ; then
+       $CIDIR/setupRealtime.sh
+fi
+
 export PYTHONPATH=./lib/python/
 echo "Running tests ${TEST_COMMAND}"
 ./runtests.py --cleanup ${TEST_COMMAND} | contrib/scripts/pretty_print --no-color --no-timer --term-width=120 --show-errors || :
diff --git a/tests/CI/setupRealtime.sh b/tests/CI/setupRealtime.sh
new file mode 100755 (executable)
index 0000000..01593a1
--- /dev/null
@@ -0,0 +1,121 @@
+#!/usr/bin/env bash
+CIDIR=$(dirname $(readlink -fn $0))
+source $CIDIR/ci.functions
+
+set -e
+
+cat >test-config.yaml <<EOF
+       global-settings:
+           test-configuration: config-realtime
+
+           condition-definitions:
+               -
+                   name: 'threads'
+                   pre:
+                       typename: 'thread_test_condition.ThreadPreTestCondition'
+                   post:
+                       typename: 'thread_test_condition.ThreadPostTestCondition'
+                       related-type: 'thread_test_condition.ThreadPreTestCondition'
+               -
+                   name: 'sip-dialogs'
+                   pre:
+                       typename: 'sip_dialog_test_condition.SipDialogPreTestCondition'
+                   post:
+                       typename: 'sip_dialog_test_condition.SipDialogPostTestCondition'
+               -
+                   name: 'locks'
+                   pre:
+                       typename: 'lock_test_condition.LockTestCondition'
+                   post:
+                       typename: 'lock_test_condition.LockTestCondition'
+               -
+                   name: 'file-descriptors'
+                   pre:
+                       typename: 'fd_test_condition.FdPreTestCondition'
+                   post:
+                       typename: 'fd_test_condition.FdPostTestCondition'
+                       related-type: 'fd_test_condition.FdPreTestCondition'
+               -
+                   name: 'channels'
+                   pre:
+                       typename: 'channel_test_condition.ChannelTestCondition'
+                   post:
+                       typename: 'channel_test_condition.ChannelTestCondition'
+               -
+                   name: 'sip-channels'
+                   pre:
+                       typename: 'sip_channel_test_condition.SipChannelTestCondition'
+                   post:
+                       typename: 'sip_channel_test_condition.SipChannelTestCondition'
+               -
+                   name: 'memory'
+                   pre:
+                       typename: 'memory_test_condition.MemoryPreTestCondition'
+                   post:
+                       typename: 'memory_test_condition.MemoryPostTestCondition'
+                       related-type: 'memory_test_condition.MemoryPreTestCondition'
+
+       config-realtime:
+           test-modules:
+               modules:
+                   -
+                       typename: realtime_converter.RealtimeConverter
+                       config-section: realtime-config
+               
+           realtime-config:
+               username: "asterisk"
+               host: "localhost"
+               db: "asterisk"
+               dsn: "asterisk-connector"
+EOF
+
+ASTTOP=$(readlink -fn $CIDIR/../../)
+
+cat >/tmp/config.ini <<-EOF
+       [alembic]
+       script_location = config
+       sqlalchemy.url = postgresql://asterisk@localhost/asterisk
+               
+       [loggers]
+       keys = root,sqlalchemy,alembic
+               
+       [handlers]
+       keys = console
+               
+       [formatters]
+       keys = generic
+               
+       [logger_root]
+       level = WARN
+       handlers = console
+       qualname =
+               
+       [logger_sqlalchemy]
+       level = WARN
+       handlers =
+       qualname = sqlalchemy.engine
+               
+       [logger_alembic]
+       level = INFO
+       handlers =
+       qualname = alembic
+               
+       [handler_console]
+       class = StreamHandler
+       args = (sys.stderr,)
+       level = NOTSET
+       formatter = generic
+               
+       [formatter_generic]
+       format = %(levelname)-5.5s [%(name)s] %(message)s
+       datefmt = %H:%M:%S
+EOF
+
+pushd $ASTTOP/contrib/ast-db-manage
+if [ -x /usr/local/bin/postgresql-start ] ; then
+       /usr/local/bin/postgresql-start
+fi
+psql --username=asterisk --host=localhost --db=asterisk --command='DROP OWNED BY asterisk CASCADE'
+alembic -c /tmp/config.ini upgrade head
+rm -rf /tmp/config.ini || :
+popd