Browse code

Split hack/test-cmd.sh into individual tests

Clayton Coleman authored on 2015/08/09 12:50:14
Showing 14 changed files
... ...
@@ -44,6 +44,12 @@ trap "cleanup" EXIT
44 44
 
45 45
 set -e
46 46
 
47
+function find_tests {
48
+  cd "${OS_ROOT}"
49
+  find "${1}" -name '*.sh' -print0 | sort -u | xargs -0 -n1 printf "%s\n"
50
+}
51
+tests=( $(find_tests ${1:-test/cmd}) )
52
+
47 53
 # Prevent user environment from colliding with the test setup
48 54
 unset KUBECONFIG
49 55
 
... ...
@@ -56,6 +62,7 @@ if [[ -z "${USE_IMAGES-}" ]]; then
56 56
   fi
57 57
   USE_IMAGES="openshift/origin-\${component}:${tag}"
58 58
 fi
59
+export USE_IMAGES
59 60
 
60 61
 ETCD_HOST=${ETCD_HOST:-127.0.0.1}
61 62
 ETCD_PORT=${ETCD_PORT:-4001}
... ...
@@ -198,6 +205,7 @@ if [[ "${API_SCHEME}" == "https" ]]; then
198 198
     [ "$(oc get services 2>&1 | grep 'certificate signed by unknown authority')" ]
199 199
 fi
200 200
 
201
+
201 202
 # login and logout tests
202 203
 # --token and --username are mutually exclusive
203 204
 [ "$(oc login ${KUBERNETES_MASTER} -u test-user --token=tmp --insecure-skip-tls-verify 2>&1 | grep 'mutually exclusive')" ]
... ...
@@ -244,582 +252,25 @@ cp ${MASTER_CONFIG_DIR}/admin.kubeconfig ${HOME}/.kube/config
244 244
 oc get services
245 245
 mv ${HOME}/.kube/config ${HOME}/.kube/non-default-config
246 246
 echo "config files: ok"
247
-export KUBECONFIG="${HOME}/.kube/non-default-config"
248 247
 
249 248
 # from this point every command will use config from the KUBECONFIG env var
249
+export KUBECONFIG="${HOME}/.kube/non-default-config"
250 250
 
251
-oc get templates
252
-oc create -f examples/sample-app/application-template-dockerbuild.json
253
-oc get templates
254
-oc get templates ruby-helloworld-sample
255
-oc get template ruby-helloworld-sample -o json | oc process -f -
256
-oc process ruby-helloworld-sample
257
-oc describe templates ruby-helloworld-sample
258
-[ "$(oc describe templates ruby-helloworld-sample | grep -E "BuildConfig.*ruby-sample-build")" ]
259
-oc delete templates ruby-helloworld-sample
260
-oc get templates
261
-# TODO: create directly from template
262
-echo "templates: ok"
263
-
264
-
265
-# Test resource builder filtering of files with expected extensions inside directories, and individual files without expected extensions
266
-[ "$(oc create -f test/resource-builder/directory -f test/resource-builder/json-no-extension -f test/resource-builder/yml-no-extension 2>&1)" ]
267
-# Explicitly specified extensionless files
268
-oc get secret json-no-extension yml-no-extension
269
-# Scanned files with extensions inside directories
270
-oc get secret json-with-extension yml-with-extension
271
-# Ensure extensionless files inside directories are not processed by resource-builder
272
-[ "$(oc get secret json-no-extension-in-directory 2>&1 | grep 'not found')" ]
273
-echo "resource-builder: ok"
274
-
275
-# verify some default commands
276
-[ "$(openshift 2>&1)" ]
277
-[ "$(openshift cli)" ]
278
-[ "$(openshift ex)" ]
279
-[ "$(openshift admin config 2>&1)" ]
280
-[ "$(openshift cli config 2>&1)" ]
281
-[ "$(openshift ex tokens)" ]
282
-[ "$(openshift admin policy  2>&1)" ]
283
-[ "$(openshift kubectl 2>&1)" ]
284
-[ "$(openshift kube 2>&1)" ]
285
-[ "$(openshift admin 2>&1)" ]
286
-[ "$(openshift start kubernetes 2>&1)" ]
287
-[ "$(kubernetes 2>&1)" ]
288
-[ "$(kubectl 2>&1)" ]
289
-[ "$(oc 2>&1)" ]
290
-[ "$(osc 2>&1)" ]
291
-[ "$(oadm 2>&1)" ]
292
-[ "$(oadm 2>&1)" ]
293
-[ "$(origin 2>&1)" ]
294
-
295
-# help for root commands must be consistent
296
-[ "$(openshift | grep 'Application Platform')" ]
297
-[ "$(oc | grep 'Developer and Administrator Client')" ]
298
-[ "$(oc | grep 'Build and Deploy Commands:')" ]
299
-[ "$(oc | grep 'Other Commands:')" ]
300
-[ "$(oc policy --help 2>&1 | grep 'add-role-to-user')" ]
301
-[ ! "$(oc policy --help 2>&1 | grep 'Other Commands')" ]
302
-[ ! "$(oc 2>&1 | grep 'Options')" ]
303
-[ ! "$(oc 2>&1 | grep 'Global Options')" ]
304
-[ "$(openshift cli 2>&1 | grep 'Developer and Administrator Client')" ]
305
-[ "$(oc types | grep 'Deployment Config')" ]
306
-[ "$(openshift kubectl 2>&1 | grep 'Kubernetes cluster')" ]
307
-[ "$(oadm 2>&1 | grep 'Administrative Commands')" ]
308
-[ "$(openshift admin 2>&1 | grep 'Administrative Commands')" ]
309
-[ "$(oadm | grep 'Basic Commands:')" ]
310
-[ "$(oadm | grep 'Install Commands:')" ]
311
-[ "$(oadm ca | grep 'Manage certificates')" ]
312
-[ "$(openshift start kubernetes 2>&1 | grep 'Kubernetes server components')" ]
313
-# check deprecated admin cmds for backward compatibility
314
-[ "$(oadm create-master-certs -h 2>&1 | grep 'Create keys and certificates')" ]
315
-[ "$(oadm create-key-pair -h 2>&1 | grep 'Create an RSA key pair')" ]
316
-[ "$(oadm create-server-cert -h 2>&1 | grep 'Create a key and server certificate')" ]
317
-[ "$(oadm create-signer-cert -h 2>&1 | grep 'Create a self-signed CA')" ]
318
-# atomic-enterprise binaries are recognized
319
-[ "$(openshift | grep -i 'OpenShift Application Platform')" ]
320
-[ ! "$(openshift | grep -i 'Atomic')" ]
321
-[ "$(origin | grep -i 'Origin Application Platform')" ]
322
-[ ! "$(origin | grep -i 'Atomic')" ]
323
-[ "$(atomic-enterprise | grep -i 'Atomic Application Platform')" ]
324
-[ ! "$(atomic-enterprise | grep -i 'OpenShift')" ]
325
-
326
-# help for root commands with --help flag must be consistent
327
-[ "$(openshift --help 2>&1 | grep 'OpenShift Application Platform')" ]
328
-[ "$(oc --help 2>&1 | grep 'Developer and Administrator Client')" ]
329
-[ "$(oc login --help 2>&1 | grep 'Options')" ]
330
-[ ! "$(oc login --help 2>&1 | grep 'Global Options')" ]
331
-[ "$(oc login --help 2>&1 | grep 'insecure-skip-tls-verify')" ]
332
-[ "$(openshift cli --help 2>&1 | grep 'Developer and Administrator Client')" ]
333
-[ "$(openshift kubectl --help 2>&1 | grep 'Kubernetes cluster')" ]
334
-[ "$(oadm --help 2>&1 | grep 'Administrative Commands')" ]
335
-[ "$(openshift admin --help 2>&1 | grep 'Administrative Commands')" ]
336
-
337
-# help for root commands through help command must be consistent
338
-[ "$(openshift help cli 2>&1 | grep 'Developer and Administrator Client')" ]
339
-[ "$(openshift help kubectl 2>&1 | grep 'Kubernetes cluster')" ]
340
-[ "$(openshift help admin 2>&1 | grep 'Administrative Commands')" ]
341
-
342
-# help for given command with --help flag must be consistent
343
-[ "$(oc get --help 2>&1 | grep 'Display one or many resources')" ]
344
-[ "$(openshift cli get --help 2>&1 | grep 'Display one or many resources')" ]
345
-[ "$(openshift kubectl get --help 2>&1 | grep 'Display one or many resources')" ]
346
-[ "$(openshift start --help 2>&1 | grep 'Start an all-in-one server')" ]
347
-[ "$(openshift start master --help 2>&1 | grep 'Start a master')" ]
348
-[ "$(openshift start node --help 2>&1 | grep 'Start a node')" ]
349
-[ "$(oc get --help 2>&1 | grep 'oc')" ]
350
-
351
-# help for given command through help command must be consistent
352
-[ "$(oc help get 2>&1 | grep 'Display one or many resources')" ]
353
-[ "$(openshift help cli get 2>&1 | grep 'Display one or many resources')" ]
354
-[ "$(openshift help kubectl get 2>&1 | grep 'Display one or many resources')" ]
355
-[ "$(openshift help start 2>&1 | grep 'Start an all-in-one server')" ]
356
-[ "$(openshift help start master 2>&1 | grep 'Start a master')" ]
357
-[ "$(openshift help start node 2>&1 | grep 'Start a node')" ]
358
-[ "$(openshift cli help update 2>&1 | grep 'openshift')" ]
359
-[ "$(openshift cli help replace 2>&1 | grep 'openshift')" ]
360
-[ "$(openshift cli help patch 2>&1 | grep 'openshift')" ]
361
-
362
-# runnable commands with required flags must error consistently
363
-[ "$(oc get 2>&1 | grep 'Required resource not specified')" ]
364
-[ "$(openshift cli get 2>&1 | grep 'Required resource not specified')" ]
365
-[ "$(openshift kubectl get 2>&1 | grep 'Required resource not specified')" ]
366
-
367
-# commands that expect file paths must validate and error out correctly
368
-[ "$(oc login --certificate-authority=/path/to/invalid 2>&1 | grep 'no such file or directory')" ]
369
-
370
-# make sure that typoed commands come back with non-zero return codes
371
-[ "$(openshift admin policy TYPO; echo $? | grep '1')" ]
372
-[ "$(openshift admin TYPO; echo $? | grep '1')" ]
373
-[ "$(openshift cli TYPO; echo $? | grep '1')" ]
374
-[ "$(oc policy TYPO; echo $? | grep '1')" ]
375
-[ "$(oc secrets TYPO; echo $? | grep '1')" ]
376
-
377
-
378
-oc secrets new-dockercfg dockercfg --docker-username=sample-user --docker-password=sample-password --docker-email=fake@example.org
379
-# can't use a go template here because the output needs to be base64 decoded.  base64 isn't installed by default in all distros
380
-oc describe secrets/dockercfg | grep "dockercfg:" | awk '{print $2}' > ${HOME}/dockerconfig
381
-oc secrets new from-file .dockercfg=${HOME}/dockerconfig
382
-# check to make sure the type was correctly auto-detected
383
-[ "$(oc get secret/from-file -t "{{ .type }}" | grep 'kubernetes.io/dockercfg')" ]
384
-# make sure the -o works correctly
385
-[ "$(oc secrets new-dockercfg dockercfg --docker-username=sample-user --docker-password=sample-password --docker-email=fake@example.org -o yaml | grep "kubernetes.io/dockercfg")" ]
386
-[ "$(oc secrets new from-file .dockercfg=${HOME}/dockerconfig -o yaml | grep "kubernetes.io/dockercfg")" ]
387
-# check to make sure malformed names fail as expected
388
-[ "$(oc secrets new bad-name .docker=cfg=${HOME}/dockerconfig 2>&1 | grep "error: Key names or file paths cannot contain '='.")" ] 
389
-
390
-
391
-# attach secrets to service account
392
-# single secret with prefix
393
-oc secrets add serviceaccounts/deployer secrets/dockercfg
394
-# don't add the same secret twice
395
-oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file
396
-# make sure we can add as as pull secret
397
-oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file --for=pull
398
-# make sure we can add as as pull secret and mount secret at once
399
-oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file --for=pull,mount
400
-echo "secrets: ok"
401
-
402
-
403
-oc get pods --match-server-version
404
-oc create -f examples/hello-openshift/hello-pod.json
405
-oc describe pod hello-openshift
406
-oc delete pods hello-openshift
407
-echo "pods: ok"
408 251
 
409
-oc get services
410
-oc create -f test/integration/fixtures/test-service.json
411
-oc delete services frontend
412
-echo "services: ok"
413
-
414
-oc get nodes
415
-echo "nodes: ok"
416
-
417
-oc get images
418
-oc create -f test/integration/fixtures/test-image.json
419
-oc delete images test
420
-echo "images: ok"
421
-
422
-oc get imageStreams
423
-oc create -f test/integration/fixtures/test-image-stream.json
424
-# make sure stream.status.dockerImageRepository isn't set (no registry)
425
-[ -z "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]
426
-# create the registry
427
-oadm registry --credentials="${KUBECONFIG}" --images="${USE_IMAGES}"
428
-# make sure stream.status.dockerImageRepository IS set
429
-[ -n "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]
430
-# ensure the registry rc has been created
431
-wait_for_command 'oc get rc docker-registry-1' "${TIME_MIN}"
432
-# delete the registry resources
433
-oc delete svc docker-registry
434
-oc delete dc docker-registry
435
-[ ! "$(oc get dc docker-registry)" ]
436
-[ ! "$(oc get rc docker-registry-1)" ]
437
-# done deleting registry resources
438
-oc delete imageStreams test
439
-[ -z "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]
440
-oc create -f examples/image-streams/image-streams-centos7.json
441
-[ -n "$(oc get imageStreams ruby -t "{{.status.dockerImageRepository}}")" ]
442
-[ -n "$(oc get imageStreams nodejs -t "{{.status.dockerImageRepository}}")" ]
443
-[ -n "$(oc get imageStreams wildfly -t "{{.status.dockerImageRepository}}")" ]
444
-[ -n "$(oc get imageStreams mysql -t "{{.status.dockerImageRepository}}")" ]
445
-[ -n "$(oc get imageStreams postgresql -t "{{.status.dockerImageRepository}}")" ]
446
-[ -n "$(oc get imageStreams mongodb -t "{{.status.dockerImageRepository}}")" ]
447
-# verify the image repository had its tags populated
448
-wait_for_command 'oc get imagestreamtags wildfly:latest' "${TIME_MIN}"
449
-[ -n "$(oc get imageStreams wildfly -t "{{ index .metadata.annotations \"openshift.io/image.dockerRepositoryCheck\"}}")" ]
450
-oc delete imageStreams ruby
451
-oc delete imageStreams nodejs
452
-oc delete imageStreams wildfly
453
-#oc delete imageStreams mysql
454
-oc delete imageStreams postgresql
455
-oc delete imageStreams mongodb
456
-[ -z "$(oc get imageStreams ruby -t "{{.status.dockerImageRepository}}")" ]
457
-[ -z "$(oc get imageStreams nodejs -t "{{.status.dockerImageRepository}}")" ]
458
-[ -z "$(oc get imageStreams postgresql -t "{{.status.dockerImageRepository}}")" ]
459
-[ -z "$(oc get imageStreams mongodb -t "{{.status.dockerImageRepository}}")" ]
460
-[ -z "$(oc get imageStreams wildfly -t "{{.status.dockerImageRepository}}")" ]
461
-wait_for_command 'oc get imagestreamTags mysql:latest' "${TIME_MIN}"
462
-[ -n "$(oc get imagestreams mysql -t "{{ index .metadata.annotations \"openshift.io/image.dockerRepositoryCheck\"}}")" ]
463
-oc describe istag/mysql:latest
464
-[ "$(oc describe istag/mysql:latest | grep "Environment:")" ]
465
-[ "$(oc describe istag/mysql:latest | grep "Image Created:")" ]
466
-[ "$(oc describe istag/mysql:latest | grep "Image Name:")" ]
467
-name=$(oc get istag/mysql:latest -t '{{ .image.metadata.name }}')
468
-imagename="isimage/mysql@${name:0:7}"
469
-oc describe "${imagename}"
470
-[ "$(oc describe ${imagename} | grep "Environment:")" ]
471
-[ "$(oc describe ${imagename} | grep "Image Created:")" ]
472
-[ "$(oc describe ${imagename} | grep "Image Name:")" ]
473
-echo "imageStreams: ok"
474
-
475
-# oc tag
476
-# start with an empty target image stream
477
-echo '{"apiVersion":"v1", "kind": "ImageStream", "metadata": {"name":"tagtest"}}' | oc create -f -
478
-echo '{"apiVersion":"v1", "kind": "ImageStream", "metadata": {"name":"tagtest2"}}' | oc create -f -
479
-
480
-oc tag mysql:latest tagtest:tag1
481
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
482
-
483
-oc tag mysql@${name} tagtest:tag2
484
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 1).from.kind}}')" == "ImageStreamImage" ]
485
-
486
-oc tag mysql:notfound tagtest:tag3
487
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 2).from.kind}}')" == "DockerImage" ]
488
-
489
-oc tag --source=imagestreamtag mysql:latest tagtest:tag4
490
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 3).from.kind}}')" == "ImageStreamTag" ]
491
-
492
-oc tag --source=istag mysql:latest tagtest:tag5
493
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 4).from.kind}}')" == "ImageStreamTag" ]
494
-
495
-oc tag --source=imagestreamimage mysql@${name} tagtest:tag6
496
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 5).from.kind}}')" == "ImageStreamImage" ]
497
-
498
-oc tag --source=isimage mysql@${name} tagtest:tag7
499
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 6).from.kind}}')" == "ImageStreamImage" ]
500
-
501
-oc tag --source=docker mysql:latest tagtest:tag8
502
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 7).from.kind}}')" == "DockerImage" ]
503
-
504
-oc tag mysql:latest tagtest:zzz tagtest2:zzz
505
-[ "$(oc get is/tagtest -t '{{(index .spec.tags 8).from.kind}}')" == "ImageStreamTag" ]
506
-[ "$(oc get is/tagtest2 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
507
-
508
-# test creating streams that don't exist
509
-[ -z "$(oc get imageStreams tagtest3 -t "{{.status.dockerImageRepository}}")" ]
510
-[ -z "$(oc get imageStreams tagtest4 -t "{{.status.dockerImageRepository}}")" ]
511
-oc tag mysql:latest tagtest3:latest tagtest4:latest
512
-[ "$(oc get is/tagtest3 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
513
-[ "$(oc get is/tagtest4 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
514
-
515
-oc delete is/tagtest is/tagtest2 is/tagtest3 is/tagtest4
516
-echo "tag: ok"
517
-
518
-[ "$(oc new-app library/php mysql -o yaml | grep 3306)" ]
519
-[ ! "$(oc new-app unknownhubimage -o yaml)" ]
520
-# verify we can generate a Docker image based component "mongodb" directly
521
-[ "$(oc new-app mongo -o yaml | grep library/mongo)" ]
522
-# the local image repository takes precedence over the Docker Hub "mysql" image
523
-[ "$(oc new-app mysql -o yaml | grep mysql-55-centos7)" ]
524
-oc delete all --all
525
-oc new-app library/php mysql -l no-source=php-mysql
526
-oc delete all -l no-source=php-mysql
527
-# check if we can create from a stored template
528
-oc create -f examples/sample-app/application-template-stibuild.json
529
-oc get template ruby-helloworld-sample
530
-[ "$(oc new-app ruby-helloworld-sample -o yaml | grep MYSQL_USER)" ]
531
-[ "$(oc new-app ruby-helloworld-sample -o yaml | grep MYSQL_PASSWORD)" ]
532
-[ "$(oc new-app ruby-helloworld-sample -o yaml | grep ADMIN_USERNAME)" ]
533
-[ "$(oc new-app ruby-helloworld-sample -o yaml | grep ADMIN_PASSWORD)" ]
534
-# check search
535
-oc create -f examples/image-streams/image-streams-centos7.json
536
-[ "$(oc new-app --search mysql | grep mysql-55-centos7)" ]
537
-[ "$(oc new-app --search ruby-helloworld-sample | grep ruby-helloworld-sample)" ]
538
-# check search - partial matches
539
-[ "$(oc new-app --search ruby-hellow | grep ruby-helloworld-sample)" ]
540
-[ "$(oc new-app --search --template=ruby-hel | grep ruby-helloworld-sample)" ]
541
-[ "$(oc new-app --search --template=ruby-helloworld-sam -o yaml | grep ruby-helloworld-sample)" ]
542
-[ "$(oc new-app --search rub | grep openshift/ruby-20-centos7)" ]
543
-[ "$(oc new-app --search --image-stream=rub | grep openshift/ruby-20-centos7)" ]
544
-# check search - check correct usage of filters
545
-[ ! "$(oc new-app --search --image-stream=ruby-heloworld-sample | grep application-template-stibuild)" ]
546
-[ ! "$(oc new-app --search --template=mongodb)" ]
547
-[ ! "$(oc new-app --search --template=php)" ]
548
-[ ! "$(oc new-app -S --template=nodejs)" ]
549
-[ ! "$(oc new-app -S --template=perl)" ]
550
-# check search - filtered, exact matches
551
-[ "$(oc new-app --search --image-stream=mongodb | grep openshift/mongodb-24-centos7)" ]
552
-[ "$(oc new-app --search --image-stream=mysql | grep openshift/mysql-55-centos7)" ]
553
-[ "$(oc new-app --search --image-stream=nodejs | grep openshift/nodejs-010-centos7)" ]
554
-[ "$(oc new-app --search --image-stream=perl | grep openshift/perl-516-centos7)" ]
555
-[ "$(oc new-app --search --image-stream=php | grep openshift/php-55-centos7)" ]
556
-[ "$(oc new-app --search --image-stream=postgresql | grep openshift/postgresql-92-centos7)" ]
557
-[ "$(oc new-app -S --image-stream=python | grep openshift/python-33-centos7)" ]
558
-[ "$(oc new-app -S --image-stream=ruby | grep openshift/ruby-20-centos7)" ]
559
-[ "$(oc new-app -S --image-stream=wildfly | grep openshift/wildfly-8-centos)" ]
560
-[ "$(oc new-app --search --template=ruby-helloworld-sample | grep ruby-helloworld-sample)" ]
561
-# check search - no matches
562
-[ "$(oc new-app -S foo-the-bar 2>&1 | grep 'no matches found')" ]
563
-[ "$(oc new-app --search winter-is-coming 2>&1 | grep 'no matches found')" ]
564
-# check search - mutually exclusive flags
565
-[ "$(oc new-app -S mysql --env=FOO=BAR 2>&1 | grep "can't be used")" ]
566
-[ "$(oc new-app --search mysql --code=https://github.com/openshift/ruby-hello-world 2>&1 | grep "can't be used")" ]
567
-[ "$(oc new-app --search mysql --param=FOO=BAR 2>&1 | grep "can't be used")" ]
568
-oc delete imageStreams --all
569
-# check that we can create from the template without errors
570
-oc new-app ruby-helloworld-sample -l app=helloworld
571
-oc delete all -l app=helloworld
572
-# create from template with code explicitly set is not supported
573
-[ ! "$(oc new-app ruby-helloworld-sample~git@github.com/mfojtik/sinatra-app-example)" ]
574
-oc delete template ruby-helloworld-sample
575
-# override component names
576
-[ "$(oc new-app mysql --name=db | grep db)" ]
577
-oc new-app https://github.com/openshift/ruby-hello-world -l app=ruby
578
-oc delete all -l app=ruby
579
-echo "new-app: ok"
580
-
581
-oc get routes
582
-oc create -f test/integration/fixtures/test-route.json
583
-oc delete routes testroute
584
-echo "routes: ok"
585
-
586
-oc get deploymentConfigs
587
-oc get dc
588
-oc create -f test/integration/fixtures/test-deployment-config.json
589
-oc describe deploymentConfigs test-deployment-config
590
-[ "$(oc env dc/test-deployment-config --list | grep TEST=value)" ]
591
-[ ! "$(oc env dc/test-deployment-config TEST- --list | grep TEST=value)" ]
592
-[ "$(oc env dc/test-deployment-config TEST=foo --list | grep TEST=foo)" ]
593
-[ "$(oc env dc/test-deployment-config OTHER=foo --list | grep TEST=value)" ]
594
-[ ! "$(oc env dc/test-deployment-config OTHER=foo -c 'ruby' --list | grep OTHER=foo)" ]
595
-[ "$(oc env dc/test-deployment-config OTHER=foo -c 'ruby*'   --list | grep OTHER=foo)" ]
596
-[ "$(oc env dc/test-deployment-config OTHER=foo -c '*hello*' --list | grep OTHER=foo)" ]
597
-[ "$(oc env dc/test-deployment-config OTHER=foo -c '*world'  --list | grep OTHER=foo)" ]
598
-[ "$(oc env dc/test-deployment-config OTHER=foo --list | grep OTHER=foo)" ]
599
-[ "$(oc env dc/test-deployment-config OTHER=foo -o yaml | grep "name: OTHER")" ]
600
-[ "$(echo "OTHER=foo" | oc env dc/test-deployment-config -e - --list | grep OTHER=foo)" ]
601
-[ ! "$(echo "#OTHER=foo" | oc env dc/test-deployment-config -e - --list | grep OTHER=foo)" ]
602
-[ "$(oc env dc/test-deployment-config TEST=bar OTHER=baz BAR-)" ]
603
-
604
-[ "$(oc volume dc/test-deployment-config --list | grep vol1)" ]
605
-[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /opt)" ]
606
-[ "$(oc volume dc/test-deployment-config --add --name=vol1 --type=secret --secret-name='$ecret' -m /data | grep overwrite)" ]
607
-[ "$(oc volume dc/test-deployment-config --add --name=vol1 --type=emptyDir -m /data --overwrite)" ]
608
-[ "$(oc volume dc/test-deployment-config --add -m /opt | grep exists)" ]
609
-[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /etc -c 'ruby' --overwrite | grep warning)" ]
610
-[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /etc -c 'ruby*' --overwrite)" ]
611
-[ "$(oc volume dc/test-deployment-config --list --name=vol2 | grep /etc)" ]
612
-[ "$(oc volume dc/test-deployment-config --add --name=vol3 -o yaml | grep vol3)" ]
613
-[ "$(oc volume dc/test-deployment-config --list --name=vol3 | grep 'not found')" ]
614
-[ "$(oc volume dc/test-deployment-config --remove 2>&1 | grep confirm)" ]
615
-[ "$(oc volume dc/test-deployment-config --remove --name=vol2)" ]
616
-[ ! "$(oc volume dc/test-deployment-config --list | grep vol2)" ]
617
-[ "$(oc volume dc/test-deployment-config --remove --confirm)" ]
618
-[ ! "$(oc volume dc/test-deployment-config --list | grep vol1)" ]
619
-oc deploy test-deployment-config
620
-oc delete deploymentConfigs test-deployment-config
621
-echo "deploymentConfigs: ok"
622
-
623
-oc process -f test/templates/fixtures/guestbook.json -l app=guestbook | oc create -f -
624
-oc status
625
-[ "$(oc status | grep frontend-service)" ]
626
-echo "template+config: ok"
627
-[ "$(OC_EDITOR='cat' oc edit svc/kubernetes 2>&1 | grep 'Edit cancelled')" ]
628
-[ "$(OC_EDITOR='cat' oc edit svc/kubernetes | grep 'provider: kubernetes')" ]
629
-oc delete all -l app=guestbook
630
-echo "edit: ok"
631
-
632
-oc delete all --all
633
-oc create -f test/integration/fixtures/test-deployment-config.json
634
-oc deploy test-deployment-config --latest
635
-wait_for_command 'oc get rc/test-deployment-config-1' "${TIME_MIN}"
636
-# scale rc via deployment configuration
637
-oc scale dc test-deployment-config --replicas=1
638
-# scale directly
639
-oc scale rc test-deployment-config-1 --replicas=5
640
-oc delete all --all
641
-echo "scale: ok"
642
-
643
-oc process -f examples/sample-app/application-template-dockerbuild.json -l app=dockerbuild | oc create -f -
644
-wait_for_command 'oc get rc/database-1' "${TIME_MIN}"
645
-
646
-oc rollback database --to-version=1 -o=yaml
647
-oc rollback dc/database --to-version=1 -o=yaml
648
-oc rollback dc/database --to-version=1 --dry-run
649
-oc rollback database-1 -o=yaml
650
-oc rollback rc/database-1 -o=yaml
651
-# should fail because there's no previous deployment
652
-[ ! "$(oc rollback database -o yaml)" ]
653
-echo "rollback: ok"
654
-
655
-oc get dc/database
656
-oc stop dc/database
657
-[ ! "$(oc get dc/database)" ]
658
-[ ! "$(oc get rc/database-1)" ]
659
-echo "stop: ok"
660
-
661
-oc label bc ruby-sample-build acustom=label
662
-[ "$(oc describe bc/ruby-sample-build | grep 'acustom=label')" ]
663
-echo "label: ok"
664
-
665
-oc delete all -l app=dockerbuild
666
-echo "delete: ok"
667
-
668
-oc process -f examples/sample-app/application-template-dockerbuild.json -l build=docker | oc create -f -
669
-oc get buildConfigs
670
-oc get bc
671
-oc get builds
672
-
673
-[[ $(oc describe buildConfigs ruby-sample-build --api-version=v1beta3 | grep --text "Webhook GitHub"  | grep -F "${API_SCHEME}://${API_HOST}:${API_PORT}/osapi/v1beta3/namespaces/default/buildconfigs/ruby-sample-build/webhooks/secret101/github") ]]
674
-[[ $(oc describe buildConfigs ruby-sample-build --api-version=v1beta3 | grep --text "Webhook Generic" | grep -F "${API_SCHEME}://${API_HOST}:${API_PORT}/osapi/v1beta3/namespaces/default/buildconfigs/ruby-sample-build/webhooks/secret101/generic") ]]
675
-oc start-build --list-webhooks='all' ruby-sample-build
676
-[[ $(oc start-build --list-webhooks='all' ruby-sample-build | grep --text "generic") ]]
677
-[[ $(oc start-build --list-webhooks='all' ruby-sample-build | grep --text "github") ]]
678
-[[ $(oc start-build --list-webhooks='github' ruby-sample-build | grep --text "secret101") ]]
679
-[ ! "$(oc start-build --list-webhooks='blah')" ]
680
-webhook=$(oc start-build --list-webhooks='generic' ruby-sample-build --api-version=v1beta3 | head -n 1)
681
-oc start-build --from-webhook="${webhook}"
682
-webhook=$(oc start-build --list-webhooks='generic' ruby-sample-build --api-version=v1 | head -n 1)
683
-oc start-build --from-webhook="${webhook}"
684
-oc get builds
685
-oc delete all -l build=docker
686
-echo "buildConfig: ok"
687
-
688
-oc create -f test/integration/fixtures/test-buildcli.json
689
-# a build for which there is not an upstream tag in the corresponding imagerepo, so
690
-# the build should use the image field as defined in the buildconfig
691
-started=$(oc start-build ruby-sample-build-invalidtag)
692
-oc describe build ${started} | grep openshift/ruby-20-centos7$
693
-echo "start-build: ok"
694
-
695
-oc cancel-build "${started}" --dump-logs --restart
696
-echo "cancel-build: ok"
697
-oc delete is/ruby-20-centos7-buildcli
698
-oc delete bc/ruby-sample-build-validtag
699
-oc delete bc/ruby-sample-build-invalidtag
700
-
701
-# Test admin manage-node operations
702
-[ "$(openshift admin manage-node --help 2>&1 | grep 'Manage nodes')" ]
703
-[ "$(oadm manage-node --selector='' --schedulable=true | grep --text 'Ready' | grep -v 'Sched')" ]
704
-oc create -f examples/hello-openshift/hello-pod.json
705
-#[ "$(oadm manage-node --list-pods | grep 'hello-openshift' | grep -E '(unassigned|assigned)')" ]
706
-#[ "$(oadm manage-node --evacuate --dry-run | grep 'hello-openshift')" ]
707
-#[ "$(oadm manage-node --schedulable=false | grep 'SchedulingDisabled')" ]
708
-#[ "$(oadm manage-node --evacuate 2>&1 | grep 'Unable to evacuate')" ]
709
-#[ "$(oadm manage-node --evacuate --force | grep 'hello-openshift')" ]
710
-#[ ! "$(oadm manage-node --list-pods | grep 'hello-openshift')" ]
711
-oc delete pods hello-openshift
712
-echo "manage-node: ok"
713
-
714
-oadm policy who-can get pods
715
-oadm policy who-can get pods -n default
716
-oadm policy who-can get pods --all-namespaces
717
-
718
-oadm policy add-role-to-group cluster-admin system:unauthenticated
719
-oadm policy add-role-to-user cluster-admin system:no-user
720
-oadm policy remove-role-from-group cluster-admin system:unauthenticated
721
-oadm policy remove-role-from-user cluster-admin system:no-user
722
-oadm policy remove-group system:unauthenticated
723
-oadm policy remove-user system:no-user
724
-oadm policy add-cluster-role-to-group cluster-admin system:unauthenticated
725
-oadm policy remove-cluster-role-from-group cluster-admin system:unauthenticated
726
-oadm policy add-cluster-role-to-user cluster-admin system:no-user
727
-oadm policy remove-cluster-role-from-user cluster-admin system:no-user
728
-oc delete clusterrole/cluster-status
729
-[ ! "$(oc get clusterrole/cluster-status)" ]
730
-oadm policy reconcile-cluster-roles
731
-[ ! "$(oc get clusterrole/cluster-status)" ]
732
-oadm policy reconcile-cluster-roles --confirm
733
-oc get clusterrole/cluster-status
734
-
735
-oc policy add-role-to-group cluster-admin system:unauthenticated
736
-oc policy add-role-to-user cluster-admin system:no-user
737
-oc policy remove-role-from-group cluster-admin system:unauthenticated
738
-oc policy remove-role-from-user cluster-admin system:no-user
739
-oc policy remove-group system:unauthenticated
740
-oc policy remove-user system:no-user
741
-echo "policy: ok"
742
-
743
-# Test the commands the UI projects page tells users to run
744
-# These should match what is described in projects.html
745
-oadm new-project ui-test-project --admin="createuser"
746
-oadm policy add-role-to-user admin adduser -n ui-test-project
747
-# Make sure project can be listed by oc (after auth cache syncs)
748
-sleep 2 && [ "$(oc get projects | grep 'ui-test-project')" ]
749
-# Make sure users got added
750
-[ "$(oc describe policybinding ':default' -n ui-test-project | grep createuser)" ]
751
-[ "$(oc describe policybinding ':default' -n ui-test-project | grep adduser)" ]
752
-echo "ui-project-commands: ok"
753
-
754
-# Expose service as a route
755
-oc create -f test/integration/fixtures/test-service.json
756
-[ ! "$(oc expose service frontend --create-external-load-balancer)" ]
757
-[ ! "$(oc expose service frontend --port=40 --type=NodePort)" ]
758
-oc expose service frontend
759
-[ "$(oc get route frontend | grep 'name=frontend')" ]
760
-oc delete svc,route -l name=frontend
761
-echo "expose: ok"
762
-
763
-# Test deleting and recreating a project
764
-oadm new-project recreated-project --admin="createuser1"
765
-oc delete project recreated-project
766
-wait_for_command '! oc get project recreated-project' "${TIME_MIN}"
767
-oadm new-project recreated-project --admin="createuser2"
768
-oc describe policybinding ':default' -n recreated-project | grep createuser2
769
-echo "new-project: ok"
770
-
771
-# Test running a router
772
-[ ! "$(oadm router --dry-run | grep 'does not exist')" ]
773
-echo '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"router"}}' | oc create -f -
774
-oc get scc privileged -o yaml | sed '/users:/ a\
775
-- system:serviceaccount:default:router\
776
-' | oc replace scc privileged -f -
777
-[ "$(oadm router -o yaml --credentials="${KUBECONFIG}" --service-account=router | grep 'openshift/origin-haproxy-')" ]
778
-oadm router --credentials="${KUBECONFIG}" --images="${USE_IMAGES}" --service-account=router
779
-[ "$(oadm router | grep 'service exists')" ]
780
-echo "router: ok"
781
-
782
-# Test running a registry
783
-[ ! "$(oadm registry --dry-run | grep 'does not exist')"]
784
-[ "$(oadm registry -o yaml --credentials="${KUBECONFIG}" | grep 'openshift/origin-docker-registry')" ]
785
-oadm registry --credentials="${KUBECONFIG}" --images="${USE_IMAGES}"
786
-[ "$(oadm registry | grep 'service exists')" ]
787
-echo "registry: ok"
788
-
789
-# Test building a dependency tree
790
-oc process -f examples/sample-app/application-template-stibuild.json -l build=sti | oc create -f -
791
-[ "$(oadm build-chain ruby-20-centos7 -o dot | grep 'graph')" ]
792
-oc delete all -l build=sti
793
-echo "ex build-chain: ok"
794
-
795
-oadm new-project example --admin="createuser"
796
-oc project example
797
-wait_for_command 'oc get serviceaccount default' "${TIME_MIN}"
798
-oc create -f test/fixtures/app-scenarios
799
-oc status
800
-oc status -o dot
801
-echo "complex-scenarios: ok"
802
-
803
-[ "$(oc export svc --all -t '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | wc -l)" -ne 0 ]
804
-[ "$(oc export svc --all --as-template=template | grep 'kind: Template')" ]
805
-[ ! "$(oc export svc --all | grep 'clusterIP')" ]
806
-[ ! "$(oc export svc --all --exact | grep 'clusterIP: ""')" ]
807
-[ ! "$(oc export svc --all --raw | grep 'clusterIP: ""')" ]
808
-[ ! "$(oc export svc --all --raw --exact)" ]
809
-[ ! "$(oc export svc -l a=b)" ] # return error if no items match selector
810
-[ "$(oc export svc -l a=b 2>&1 | grep 'no resources found')" ]
811
-[ "$(oc export svc -l template=ruby-helloworld-sample)" ]
812
-[ "$(oc export -f examples/sample-app/application-template-stibuild.json --raw --output-version=v1 | grep 'apiVersion: v1')" ]
813
-echo "export: ok"
814
-
815
-# Clean-up everything before testing cleaning up everything...
816
-oc delete all --all
817
-oc process -f examples/sample-app/application-template-stibuild.json -l name=mytemplate | oc create -f -
818
-oc delete all -l name=mytemplate
819
-oc new-app https://github.com/openshift/ruby-hello-world -l name=hello-world
820
-oc delete all -l name=hello-world
821
-echo "delete all: ok"
252
+# NOTE: Do not add tests here, add them to test/cmd/*.
253
+# Tests should assume they run in an empty project, and should be reentrant if possible
254
+# to make it easy to run individual tests
255
+for test in "${tests[@]}"; do
256
+  echo
257
+  echo "++ ${test}"
258
+  name=$(basename ${test} .sh)
259
+  oc new-project "cmd-${name}"
260
+  ${test}
261
+  oc delete project "cmd-${name}"
262
+done
263
+
822 264
 
265
+# Done
823 266
 echo
824 267
 echo
825 268
 wait_for_url "${API_SCHEME}://${API_HOST}:${API_PORT}/metrics" "metrics: " 0.25 80
826 269
new file mode 100755
... ...
@@ -0,0 +1,110 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+function tryuntil {
7
+  timeout=$(($(date +%s) + 60))
8
+  until eval "${@}" || [[ $(date +%s) -gt $timeout ]]; do :; done
9
+}
10
+
11
+# Cleanup cluster resources created by this test
12
+(
13
+  set +e
14
+  oc delete project/example project/ui-test-project project/recreated-project
15
+  oc delete sa/router -n default
16
+  oadm policy reconcile-cluster-roles
17
+) 2>/dev/null 1>&2
18
+
19
+defaultimage="openshift/origin-\${component}:latest"
20
+USE_IMAGES=${USE_IMAGES:-$defaultimage}
21
+
22
+# This test validates admin level commands including system policy
23
+
24
+# Test admin manage-node operations
25
+[ "$(openshift admin manage-node --help 2>&1 | grep 'Manage nodes')" ]
26
+[ "$(oadm manage-node --selector='' --schedulable=true | grep --text 'Ready' | grep -v 'Sched')" ]
27
+oc create -f examples/hello-openshift/hello-pod.json
28
+#[ "$(oadm manage-node --list-pods | grep 'hello-openshift' | grep -E '(unassigned|assigned)')" ]
29
+#[ "$(oadm manage-node --evacuate --dry-run | grep 'hello-openshift')" ]
30
+#[ "$(oadm manage-node --schedulable=false | grep 'SchedulingDisabled')" ]
31
+#[ "$(oadm manage-node --evacuate 2>&1 | grep 'Unable to evacuate')" ]
32
+#[ "$(oadm manage-node --evacuate --force | grep 'hello-openshift')" ]
33
+#[ ! "$(oadm manage-node --list-pods | grep 'hello-openshift')" ]
34
+oc delete pods hello-openshift
35
+echo "manage-node: ok"
36
+
37
+oadm policy who-can get pods
38
+oadm policy who-can get pods -n default
39
+oadm policy who-can get pods --all-namespaces
40
+
41
+oadm policy add-role-to-group cluster-admin system:unauthenticated
42
+oadm policy add-role-to-user cluster-admin system:no-user
43
+oadm policy remove-role-from-group cluster-admin system:unauthenticated
44
+oadm policy remove-role-from-user cluster-admin system:no-user
45
+oadm policy remove-group system:unauthenticated
46
+oadm policy remove-user system:no-user
47
+oadm policy add-cluster-role-to-group cluster-admin system:unauthenticated
48
+oadm policy remove-cluster-role-from-group cluster-admin system:unauthenticated
49
+oadm policy add-cluster-role-to-user cluster-admin system:no-user
50
+oadm policy remove-cluster-role-from-user cluster-admin system:no-user
51
+oc delete clusterrole/cluster-status
52
+[ ! "$(oc get clusterrole/cluster-status)" ]
53
+oadm policy reconcile-cluster-roles
54
+[ ! "$(oc get clusterrole/cluster-status)" ]
55
+oadm policy reconcile-cluster-roles --confirm
56
+oc get clusterrole/cluster-status
57
+echo "admin-policy: ok"
58
+
59
+# Test the commands the UI projects page tells users to run
60
+# These should match what is described in projects.html
61
+oadm new-project ui-test-project --admin="createuser"
62
+oadm policy add-role-to-user admin adduser -n ui-test-project
63
+# Make sure project can be listed by oc (after auth cache syncs)
64
+tryuntil '[ "$(oc get projects | grep "ui-test-project")" ]'
65
+# Make sure users got added
66
+[ "$(oc describe policybinding ':default' -n ui-test-project | grep createuser)" ]
67
+[ "$(oc describe policybinding ':default' -n ui-test-project | grep adduser)" ]
68
+echo "ui-project-commands: ok"
69
+
70
+
71
+# Test deleting and recreating a project
72
+oadm new-project recreated-project --admin="createuser1"
73
+oc delete project recreated-project
74
+tryuntil '! oc get project recreated-project'
75
+oadm new-project recreated-project --admin="createuser2"
76
+oc describe policybinding ':default' -n recreated-project | grep createuser2
77
+echo "new-project: ok"
78
+
79
+# Test running a router
80
+[ ! "$(oadm router --dry-run | grep 'does not exist')" ]
81
+echo '{"kind":"ServiceAccount","apiVersion":"v1","metadata":{"name":"router"}}' | oc create -f - -n default
82
+oc get scc privileged -o yaml | sed '/users:/ a\
83
+- system:serviceaccount:default:router\
84
+' | oc replace scc privileged -f -
85
+[ "$(oadm router -o yaml --credentials="${KUBECONFIG}" --service-account=router -n default | grep 'openshift/origin-haproxy-')" ]
86
+oadm router --credentials="${KUBECONFIG}" --images="${USE_IMAGES}" --service-account=router -n default
87
+[ "$(oadm router -n default | grep 'service exists')" ]
88
+echo "router: ok"
89
+
90
+# Test running a registry
91
+[ ! "$(oadm registry --dry-run | grep 'does not exist')"]
92
+[ "$(oadm registry -o yaml --credentials="${KUBECONFIG}" | grep 'openshift/origin-docker-registry')" ]
93
+oadm registry --credentials="${KUBECONFIG}" --images="${USE_IMAGES}"
94
+[ "$(oadm registry | grep 'service exists')" ]
95
+echo "registry: ok"
96
+
97
+# Test building a dependency tree
98
+oc process -f examples/sample-app/application-template-stibuild.json -l build=sti | oc create -f -
99
+[ "$(oadm build-chain ruby-20-centos7 -o dot | grep 'graph')" ]
100
+oc delete all -l build=sti
101
+echo "ex build-chain: ok"
102
+
103
+oadm new-project example --admin="createuser"
104
+oc project example
105
+tryuntil oc get serviceaccount default
106
+oc create -f test/fixtures/app-scenarios
107
+oc status
108
+oc status -o dot
109
+echo "complex-scenarios: ok"
0 110
\ No newline at end of file
1 111
new file mode 100755
... ...
@@ -0,0 +1,63 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates basic resource retrieval and command interaction
7
+
8
+# Test resource builder filtering of files with expected extensions inside directories, and individual files without expected extensions
9
+[ "$(oc create -f test/resource-builder/directory -f test/resource-builder/json-no-extension -f test/resource-builder/yml-no-extension 2>&1)" ]
10
+# Explicitly specified extensionless files
11
+oc get secret json-no-extension yml-no-extension
12
+# Scanned files with extensions inside directories
13
+oc get secret json-with-extension yml-with-extension
14
+# Ensure extensionless files inside directories are not processed by resource-builder
15
+[ "$(oc get secret json-no-extension-in-directory 2>&1 | grep 'not found')" ]
16
+echo "resource-builder: ok"
17
+
18
+oc get pods --match-server-version
19
+oc create -f examples/hello-openshift/hello-pod.json
20
+oc describe pod hello-openshift
21
+oc delete pods hello-openshift
22
+echo "pods: ok"
23
+
24
+oc create -f examples/hello-openshift/hello-pod.json
25
+oc label pod/hello-openshift acustom=label
26
+[ "$(oc describe pod/hello-openshift | grep 'acustom=label')" ]
27
+oc delete pods -l acustom=label
28
+[ ! "$(oc get pod/hello-openshift)" ]
29
+echo "label: ok"
30
+
31
+oc get services
32
+oc create -f test/integration/fixtures/test-service.json
33
+oc delete services frontend
34
+echo "services: ok"
35
+
36
+oc get nodes
37
+echo "nodes: ok"
38
+
39
+oc get routes
40
+oc create -f test/integration/fixtures/test-route.json
41
+oc delete routes testroute
42
+echo "routes: ok"
43
+
44
+# Expose service as a route
45
+oc create -f test/integration/fixtures/test-service.json
46
+[ ! "$(oc expose service frontend --create-external-load-balancer)" ]
47
+[ ! "$(oc expose service frontend --port=40 --type=NodePort)" ]
48
+oc expose service frontend
49
+[ "$(oc get route frontend | grep 'name=frontend')" ]
50
+oc delete svc,route -l name=frontend
51
+echo "expose: ok"
52
+
53
+oc delete all --all
54
+
55
+oc process -f examples/sample-app/application-template-stibuild.json -l name=mytemplate | oc create -f -
56
+oc delete all -l name=mytemplate
57
+oc new-app https://github.com/openshift/ruby-hello-world
58
+[ "$(oc get dc/ruby-hello-world)" ]
59
+oc delete all -l app=ruby-hello-world
60
+[ ! "$(oc get dc/ruby-hello-world)" ]
61
+echo "delete all: ok"
62
+
0 63
new file mode 100755
... ...
@@ -0,0 +1,44 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+url=":${API_PORT:-8443}"
7
+project="$(oc project -q)"
8
+
9
+# This test validates builds and build related commands
10
+
11
+oc process -f examples/sample-app/application-template-dockerbuild.json -l build=docker | oc create -f -
12
+oc get buildConfigs
13
+oc get bc
14
+oc get builds
15
+
16
+[ "$(oc describe buildConfigs ruby-sample-build --api-version=v1beta3 | grep --text "Webhook GitHub" | grep -F "${url}/osapi/v1beta3/namespaces/${project}/buildconfigs/ruby-sample-build/webhooks/secret101/github")" ]
17
+[ "$(oc describe buildConfigs ruby-sample-build --api-version=v1beta3 | grep --text "Webhook Generic" | grep -F "${url}/osapi/v1beta3/namespaces/${project}/buildconfigs/ruby-sample-build/webhooks/secret101/generic")" ]
18
+oc start-build --list-webhooks='all' ruby-sample-build
19
+[ "$(oc start-build --list-webhooks='all' ruby-sample-build | grep --text "generic")" ]
20
+[ "$(oc start-build --list-webhooks='all' ruby-sample-build | grep --text "github")" ]
21
+[ "$(oc start-build --list-webhooks='github' ruby-sample-build | grep --text "secret101")" ]
22
+[ ! "$(oc start-build --list-webhooks='blah')" ]
23
+webhook=$(oc start-build --list-webhooks='generic' ruby-sample-build --api-version=v1beta3 | head -n 1)
24
+oc start-build --from-webhook="${webhook}"
25
+webhook=$(oc start-build --list-webhooks='generic' ruby-sample-build --api-version=v1 | head -n 1)
26
+oc start-build --from-webhook="${webhook}"
27
+oc get builds
28
+oc delete all -l build=docker
29
+echo "buildConfig: ok"
30
+
31
+oc create -f test/integration/fixtures/test-buildcli.json
32
+# a build for which there is not an upstream tag in the corresponding imagerepo, so
33
+# the build should use the image field as defined in the buildconfig
34
+started=$(oc start-build ruby-sample-build-invalidtag)
35
+oc describe build ${started} | grep openshift/ruby-20-centos7$
36
+echo "start-build: ok"
37
+
38
+oc cancel-build "${started}" --dump-logs --restart
39
+echo "cancel-build: ok"
40
+oc delete is/ruby-20-centos7-buildcli
41
+oc delete bc/ruby-sample-build-validtag
42
+oc delete bc/ruby-sample-build-invalidtag
43
+
0 44
new file mode 100755
... ...
@@ -0,0 +1,66 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+function tryuntil {
7
+  timeout=$(($(date +%s) + 60))
8
+  until eval "${@}" || [[ $(date +%s) -gt $timeout ]]; do :; done
9
+}
10
+
11
+# This test validates deployments
12
+
13
+oc get deploymentConfigs
14
+oc get dc
15
+oc create -f test/integration/fixtures/test-deployment-config.json
16
+oc describe deploymentConfigs test-deployment-config
17
+[ "$(oc env dc/test-deployment-config --list | grep TEST=value)" ]
18
+[ ! "$(oc env dc/test-deployment-config TEST- --list | grep TEST=value)" ]
19
+[ "$(oc env dc/test-deployment-config TEST=foo --list | grep TEST=foo)" ]
20
+[ "$(oc env dc/test-deployment-config OTHER=foo --list | grep TEST=value)" ]
21
+[ ! "$(oc env dc/test-deployment-config OTHER=foo -c 'ruby' --list | grep OTHER=foo)" ]
22
+[ "$(oc env dc/test-deployment-config OTHER=foo -c 'ruby*'   --list | grep OTHER=foo)" ]
23
+[ "$(oc env dc/test-deployment-config OTHER=foo -c '*hello*' --list | grep OTHER=foo)" ]
24
+[ "$(oc env dc/test-deployment-config OTHER=foo -c '*world'  --list | grep OTHER=foo)" ]
25
+[ "$(oc env dc/test-deployment-config OTHER=foo --list | grep OTHER=foo)" ]
26
+[ "$(oc env dc/test-deployment-config OTHER=foo -o yaml | grep "name: OTHER")" ]
27
+[ "$(echo "OTHER=foo" | oc env dc/test-deployment-config -e - --list | grep OTHER=foo)" ]
28
+[ ! "$(echo "#OTHER=foo" | oc env dc/test-deployment-config -e - --list | grep OTHER=foo)" ]
29
+[ "$(oc env dc/test-deployment-config TEST=bar OTHER=baz BAR-)" ]
30
+
31
+oc deploy test-deployment-config
32
+oc delete deploymentConfigs test-deployment-config
33
+echo "deploymentConfigs: ok"
34
+
35
+oc delete all --all
36
+
37
+oc create -f test/integration/fixtures/test-deployment-config.json
38
+oc deploy test-deployment-config --latest
39
+tryuntil oc get rc/test-deployment-config-1
40
+# scale rc via deployment configuration
41
+oc scale dc test-deployment-config --replicas=1
42
+# scale directly
43
+oc scale rc test-deployment-config-1 --replicas=5
44
+oc delete all --all
45
+echo "scale: ok"
46
+
47
+oc delete all --all
48
+
49
+oc process -f examples/sample-app/application-template-dockerbuild.json -l app=dockerbuild | oc create -f -
50
+tryuntil oc get rc/database-1
51
+
52
+oc rollback database --to-version=1 -o=yaml
53
+oc rollback dc/database --to-version=1 -o=yaml
54
+oc rollback dc/database --to-version=1 --dry-run
55
+oc rollback database-1 -o=yaml
56
+oc rollback rc/database-1 -o=yaml
57
+# should fail because there's no previous deployment
58
+[ ! "$(oc rollback database -o yaml)" ]
59
+echo "rollback: ok"
60
+
61
+oc get dc/database
62
+oc stop dc/database
63
+[ ! "$(oc get dc/database)" ]
64
+[ ! "$(oc get rc/database-1)" ]
65
+echo "stop: ok"
0 66
new file mode 100755
... ...
@@ -0,0 +1,14 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates the edit command
7
+
8
+oc create -f examples/hello-openshift/hello-pod.json
9
+
10
+[ "$(OC_EDITOR='cat' oc edit pod/hello-openshift 2>&1 | grep 'Edit cancelled')" ]
11
+[ "$(OC_EDITOR='cat' oc edit pod/hello-openshift | grep 'name: hello-openshift')" ]
12
+echo "edit: ok"
13
+
0 14
new file mode 100755
... ...
@@ -0,0 +1,21 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates the export command
7
+
8
+oc new-app -f examples/sample-app/application-template-stibuild.json --name=sample
9
+
10
+[ "$(oc export svc --all -t '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}' | wc -l)" -ne 0 ]
11
+[ "$(oc export svc --all --as-template=template | grep 'kind: Template')" ]
12
+[ ! "$(oc export svc --all | grep 'clusterIP')" ]
13
+[ ! "$(oc export svc --all --exact | grep 'clusterIP: ""')" ]
14
+[ ! "$(oc export svc --all --raw | grep 'clusterIP: ""')" ]
15
+[ ! "$(oc export svc --all --raw --exact)" ]
16
+[ ! "$(oc export svc -l a=b)" ] # return error if no items match selector
17
+[ "$(oc export svc -l a=b 2>&1 | grep 'no resources found')" ]
18
+[ "$(oc export svc -l app=sample)" ]
19
+[ "$(oc export -f examples/sample-app/application-template-stibuild.json --raw --output-version=v1 | grep 'apiVersion: v1')" ]
20
+echo "export: ok"
0 21
new file mode 100755
... ...
@@ -0,0 +1,109 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates the help commands and output text
7
+
8
+# verify some default commands
9
+[ "$(openshift 2>&1)" ]
10
+[ "$(openshift cli)" ]
11
+[ "$(openshift ex)" ]
12
+[ "$(openshift admin config 2>&1)" ]
13
+[ "$(openshift cli config 2>&1)" ]
14
+[ "$(openshift ex tokens)" ]
15
+[ "$(openshift admin policy  2>&1)" ]
16
+[ "$(openshift kubectl 2>&1)" ]
17
+[ "$(openshift kube 2>&1)" ]
18
+[ "$(openshift admin 2>&1)" ]
19
+[ "$(openshift start kubernetes 2>&1)" ]
20
+[ "$(kubernetes 2>&1)" ]
21
+[ "$(kubectl 2>&1)" ]
22
+[ "$(oc 2>&1)" ]
23
+[ "$(osc 2>&1)" ]
24
+[ "$(oadm 2>&1)" ]
25
+[ "$(oadm 2>&1)" ]
26
+[ "$(origin 2>&1)" ]
27
+
28
+# help for root commands must be consistent
29
+[ "$(openshift | grep 'Application Platform')" ]
30
+[ "$(oc | grep 'Developer and Administrator Client')" ]
31
+[ "$(oc | grep 'Build and Deploy Commands:')" ]
32
+[ "$(oc | grep 'Other Commands:')" ]
33
+[ "$(oc policy --help 2>&1 | grep 'add-role-to-user')" ]
34
+[ ! "$(oc policy --help 2>&1 | grep 'Other Commands')" ]
35
+[ ! "$(oc 2>&1 | grep 'Options')" ]
36
+[ ! "$(oc 2>&1 | grep 'Global Options')" ]
37
+[ "$(openshift cli 2>&1 | grep 'Developer and Administrator Client')" ]
38
+[ "$(oc types | grep 'Deployment Config')" ]
39
+[ "$(openshift kubectl 2>&1 | grep 'Kubernetes cluster')" ]
40
+[ "$(oadm 2>&1 | grep 'Administrative Commands')" ]
41
+[ "$(openshift admin 2>&1 | grep 'Administrative Commands')" ]
42
+[ "$(oadm | grep 'Basic Commands:')" ]
43
+[ "$(oadm | grep 'Install Commands:')" ]
44
+[ "$(oadm ca | grep 'Manage certificates')" ]
45
+[ "$(openshift start kubernetes 2>&1 | grep 'Kubernetes server components')" ]
46
+# check deprecated admin cmds for backward compatibility
47
+[ "$(oadm create-master-certs -h 2>&1 | grep 'Create keys and certificates')" ]
48
+[ "$(oadm create-key-pair -h 2>&1 | grep 'Create an RSA key pair')" ]
49
+[ "$(oadm create-server-cert -h 2>&1 | grep 'Create a key and server certificate')" ]
50
+[ "$(oadm create-signer-cert -h 2>&1 | grep 'Create a self-signed CA')" ]
51
+# atomic-enterprise binaries are recognized
52
+[ "$(openshift | grep -i 'OpenShift Application Platform')" ]
53
+[ ! "$(openshift | grep -i 'Atomic')" ]
54
+[ "$(origin | grep -i 'Origin Application Platform')" ]
55
+[ ! "$(origin | grep -i 'Atomic')" ]
56
+[ "$(atomic-enterprise | grep -i 'Atomic Application Platform')" ]
57
+[ ! "$(atomic-enterprise | grep -i 'OpenShift')" ]
58
+
59
+# help for root commands with --help flag must be consistent
60
+[ "$(openshift --help 2>&1 | grep 'OpenShift Application Platform')" ]
61
+[ "$(oc --help 2>&1 | grep 'Developer and Administrator Client')" ]
62
+[ "$(oc login --help 2>&1 | grep 'Options')" ]
63
+[ ! "$(oc login --help 2>&1 | grep 'Global Options')" ]
64
+[ "$(oc login --help 2>&1 | grep 'insecure-skip-tls-verify')" ]
65
+[ "$(openshift cli --help 2>&1 | grep 'Developer and Administrator Client')" ]
66
+[ "$(openshift kubectl --help 2>&1 | grep 'Kubernetes cluster')" ]
67
+[ "$(oadm --help 2>&1 | grep 'Administrative Commands')" ]
68
+[ "$(openshift admin --help 2>&1 | grep 'Administrative Commands')" ]
69
+
70
+# help for root commands through help command must be consistent
71
+[ "$(openshift help cli 2>&1 | grep 'Developer and Administrator Client')" ]
72
+[ "$(openshift help kubectl 2>&1 | grep 'Kubernetes cluster')" ]
73
+[ "$(openshift help admin 2>&1 | grep 'Administrative Commands')" ]
74
+
75
+# help for given command with --help flag must be consistent
76
+[ "$(oc get --help 2>&1 | grep 'Display one or many resources')" ]
77
+[ "$(openshift cli get --help 2>&1 | grep 'Display one or many resources')" ]
78
+[ "$(openshift kubectl get --help 2>&1 | grep 'Display one or many resources')" ]
79
+[ "$(openshift start --help 2>&1 | grep 'Start an all-in-one server')" ]
80
+[ "$(openshift start master --help 2>&1 | grep 'Start a master')" ]
81
+[ "$(openshift start node --help 2>&1 | grep 'Start a node')" ]
82
+[ "$(oc get --help 2>&1 | grep 'oc')" ]
83
+
84
+# help for given command through help command must be consistent
85
+[ "$(oc help get 2>&1 | grep 'Display one or many resources')" ]
86
+[ "$(openshift help cli get 2>&1 | grep 'Display one or many resources')" ]
87
+[ "$(openshift help kubectl get 2>&1 | grep 'Display one or many resources')" ]
88
+[ "$(openshift help start 2>&1 | grep 'Start an all-in-one server')" ]
89
+[ "$(openshift help start master 2>&1 | grep 'Start a master')" ]
90
+[ "$(openshift help start node 2>&1 | grep 'Start a node')" ]
91
+[ "$(openshift cli help update 2>&1 | grep 'openshift')" ]
92
+[ "$(openshift cli help replace 2>&1 | grep 'openshift')" ]
93
+[ "$(openshift cli help patch 2>&1 | grep 'openshift')" ]
94
+
95
+# runnable commands with required flags must error consistently
96
+[ "$(oc get 2>&1 | grep 'Required resource not specified')" ]
97
+[ "$(openshift cli get 2>&1 | grep 'Required resource not specified')" ]
98
+[ "$(openshift kubectl get 2>&1 | grep 'Required resource not specified')" ]
99
+
100
+# commands that expect file paths must validate and error out correctly
101
+[ "$(oc login --certificate-authority=/path/to/invalid 2>&1 | grep 'no such file or directory')" ]
102
+
103
+# make sure that typoed commands come back with non-zero return codes
104
+[ "$(openshift admin policy TYPO; echo $? | grep '1')" ]
105
+[ "$(openshift admin TYPO; echo $? | grep '1')" ]
106
+[ "$(openshift cli TYPO; echo $? | grep '1')" ]
107
+[ "$(oc policy TYPO; echo $? | grep '1')" ]
108
+[ "$(oc secrets TYPO; echo $? | grep '1')" ]
0 109
new file mode 100755
... ...
@@ -0,0 +1,110 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+function tryuntil {
7
+  timeout=$(($(date +%s) + 60))
8
+  until eval "${@}" || [[ $(date +%s) -gt $timeout ]]; do :; done
9
+}
10
+
11
+defaultimage="openshift/origin-\${component}:latest"
12
+USE_IMAGES=${USE_IMAGES:-$defaultimage}
13
+
14
+# This test validates images and image streams along with the tag and import-image commands
15
+
16
+oc get images
17
+oc create -f test/integration/fixtures/test-image.json
18
+oc delete images test
19
+echo "images: ok"
20
+
21
+oc get imageStreams
22
+oc create -f test/integration/fixtures/test-image-stream.json
23
+# verify that creating a registry fills out .status.dockerImageRepository
24
+if [ -z "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]; then
25
+  # create the registry
26
+  oadm registry --credentials="${KUBECONFIG}" --images="${USE_IMAGES}" -n default
27
+  # make sure stream.status.dockerImageRepository IS set
28
+  [ -n "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]
29
+fi
30
+oc delete imageStreams test
31
+[ -z "$(oc get imageStreams test -t "{{.status.dockerImageRepository}}")" ]
32
+
33
+oc create -f examples/image-streams/image-streams-centos7.json
34
+[ -n "$(oc get imageStreams ruby -t "{{.status.dockerImageRepository}}")" ]
35
+[ -n "$(oc get imageStreams nodejs -t "{{.status.dockerImageRepository}}")" ]
36
+[ -n "$(oc get imageStreams wildfly -t "{{.status.dockerImageRepository}}")" ]
37
+[ -n "$(oc get imageStreams mysql -t "{{.status.dockerImageRepository}}")" ]
38
+[ -n "$(oc get imageStreams postgresql -t "{{.status.dockerImageRepository}}")" ]
39
+[ -n "$(oc get imageStreams mongodb -t "{{.status.dockerImageRepository}}")" ]
40
+# verify the image repository had its tags populated
41
+tryuntil oc get imagestreamtags wildfly:latest
42
+[ -n "$(oc get imageStreams wildfly -t "{{ index .metadata.annotations \"openshift.io/image.dockerRepositoryCheck\"}}")" ]
43
+oc delete imageStreams ruby
44
+oc delete imageStreams nodejs
45
+oc delete imageStreams wildfly
46
+#oc delete imageStreams mysql
47
+oc delete imageStreams postgresql
48
+oc delete imageStreams mongodb
49
+[ -z "$(oc get imageStreams ruby -t "{{.status.dockerImageRepository}}")" ]
50
+[ -z "$(oc get imageStreams nodejs -t "{{.status.dockerImageRepository}}")" ]
51
+[ -z "$(oc get imageStreams postgresql -t "{{.status.dockerImageRepository}}")" ]
52
+[ -z "$(oc get imageStreams mongodb -t "{{.status.dockerImageRepository}}")" ]
53
+[ -z "$(oc get imageStreams wildfly -t "{{.status.dockerImageRepository}}")" ]
54
+tryuntil oc get imagestreamTags mysql:latest
55
+[ -n "$(oc get imagestreams mysql -t "{{ index .metadata.annotations \"openshift.io/image.dockerRepositoryCheck\"}}")" ]
56
+oc describe istag/mysql:latest
57
+[ "$(oc describe istag/mysql:latest | grep "Environment:")" ]
58
+[ "$(oc describe istag/mysql:latest | grep "Image Created:")" ]
59
+[ "$(oc describe istag/mysql:latest | grep "Image Name:")" ]
60
+name=$(oc get istag/mysql:latest -t '{{ .image.metadata.name }}')
61
+imagename="isimage/mysql@${name:0:7}"
62
+oc describe "${imagename}"
63
+[ "$(oc describe ${imagename} | grep "Environment:")" ]
64
+[ "$(oc describe ${imagename} | grep "Image Created:")" ]
65
+[ "$(oc describe ${imagename} | grep "Image Name:")" ]
66
+echo "imageStreams: ok"
67
+
68
+# oc tag
69
+# start with an empty target image stream
70
+echo '{"apiVersion":"v1", "kind": "ImageStream", "metadata": {"name":"tagtest"}}' | oc create -f -
71
+echo '{"apiVersion":"v1", "kind": "ImageStream", "metadata": {"name":"tagtest2"}}' | oc create -f -
72
+
73
+oc tag mysql:latest tagtest:tag1
74
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
75
+
76
+oc tag mysql@${name} tagtest:tag2
77
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 1).from.kind}}')" == "ImageStreamImage" ]
78
+
79
+oc tag mysql:notfound tagtest:tag3
80
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 2).from.kind}}')" == "DockerImage" ]
81
+
82
+oc tag --source=imagestreamtag mysql:latest tagtest:tag4
83
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 3).from.kind}}')" == "ImageStreamTag" ]
84
+
85
+oc tag --source=istag mysql:latest tagtest:tag5
86
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 4).from.kind}}')" == "ImageStreamTag" ]
87
+
88
+oc tag --source=imagestreamimage mysql@${name} tagtest:tag6
89
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 5).from.kind}}')" == "ImageStreamImage" ]
90
+
91
+oc tag --source=isimage mysql@${name} tagtest:tag7
92
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 6).from.kind}}')" == "ImageStreamImage" ]
93
+
94
+oc tag --source=docker mysql:latest tagtest:tag8
95
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 7).from.kind}}')" == "DockerImage" ]
96
+
97
+oc tag mysql:latest tagtest:zzz tagtest2:zzz
98
+[ "$(oc get is/tagtest -t '{{(index .spec.tags 8).from.kind}}')" == "ImageStreamTag" ]
99
+[ "$(oc get is/tagtest2 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
100
+
101
+# test creating streams that don't exist
102
+[ -z "$(oc get imageStreams tagtest3 -t "{{.status.dockerImageRepository}}")" ]
103
+[ -z "$(oc get imageStreams tagtest4 -t "{{.status.dockerImageRepository}}")" ]
104
+oc tag mysql:latest tagtest3:latest tagtest4:latest
105
+[ "$(oc get is/tagtest3 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
106
+[ "$(oc get is/tagtest4 -t '{{(index .spec.tags 0).from.kind}}')" == "ImageStreamTag" ]
107
+
108
+oc delete is/tagtest is/tagtest2 is/tagtest3 is/tagtest4
109
+echo "tag: ok"
0 110
new file mode 100755
... ...
@@ -0,0 +1,84 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+function tryuntil {
7
+  timeout=$(($(date +%s) + 60))
8
+  until eval "${@}" || [[ $(date +%s) -gt $timeout ]]; do :; done
9
+}
10
+
11
+# This test validates the new-app command
12
+
13
+oc create -f examples/image-streams/image-streams-centos7.json
14
+
15
+[ "$(oc new-app library/php mysql -o yaml | grep 3306)" ]
16
+[ ! "$(oc new-app unknownhubimage -o yaml)" ]
17
+# verify we can generate a Docker image based component "mongodb" directly
18
+[ "$(oc new-app mongo -o yaml | grep library/mongo)" ]
19
+# the local image repository takes precedence over the Docker Hub "mysql" image
20
+tryuntil oc get imagestreamtags mysql:latest
21
+[ "$(oc new-app mysql -o yaml | grep mysql-55-centos7)" ]
22
+
23
+# check label creation
24
+oc new-app php mysql -l no-source=php-mysql
25
+oc delete all -l no-source=php-mysql
26
+oc new-app php mysql
27
+oc delete all -l app=php
28
+[ ! "$(oc get dc/mysql)" ]
29
+[ ! "$(oc get dc/php)" ]
30
+
31
+# check if we can create from a stored template
32
+oc create -f examples/sample-app/application-template-stibuild.json
33
+oc get template ruby-helloworld-sample
34
+[ "$(oc new-app ruby-helloworld-sample -o yaml | grep MYSQL_USER)" ]
35
+[ "$(oc new-app ruby-helloworld-sample -o yaml | grep MYSQL_PASSWORD)" ]
36
+[ "$(oc new-app ruby-helloworld-sample -o yaml | grep ADMIN_USERNAME)" ]
37
+[ "$(oc new-app ruby-helloworld-sample -o yaml | grep ADMIN_PASSWORD)" ]
38
+
39
+# check search
40
+[ "$(oc new-app --search mysql | grep mysql-55-centos7)" ]
41
+[ "$(oc new-app --search ruby-helloworld-sample | grep ruby-helloworld-sample)" ]
42
+# check search - partial matches
43
+[ "$(oc new-app --search ruby-hellow | grep ruby-helloworld-sample)" ]
44
+[ "$(oc new-app --search --template=ruby-hel | grep ruby-helloworld-sample)" ]
45
+[ "$(oc new-app --search --template=ruby-helloworld-sam -o yaml | grep ruby-helloworld-sample)" ]
46
+[ "$(oc new-app --search rub | grep openshift/ruby-20-centos7)" ]
47
+[ "$(oc new-app --search --image-stream=rub | grep openshift/ruby-20-centos7)" ]
48
+# check search - check correct usage of filters
49
+[ ! "$(oc new-app --search --image-stream=ruby-heloworld-sample | grep application-template-stibuild)" ]
50
+[ ! "$(oc new-app --search --template=mongodb)" ]
51
+[ ! "$(oc new-app --search --template=php)" ]
52
+[ ! "$(oc new-app -S --template=nodejs)" ]
53
+[ ! "$(oc new-app -S --template=perl)" ]
54
+# check search - filtered, exact matches
55
+[ "$(oc new-app --search --image-stream=mongodb | grep openshift/mongodb-24-centos7)" ]
56
+[ "$(oc new-app --search --image-stream=mysql | grep openshift/mysql-55-centos7)" ]
57
+[ "$(oc new-app --search --image-stream=nodejs | grep openshift/nodejs-010-centos7)" ]
58
+[ "$(oc new-app --search --image-stream=perl | grep openshift/perl-516-centos7)" ]
59
+[ "$(oc new-app --search --image-stream=php | grep openshift/php-55-centos7)" ]
60
+[ "$(oc new-app --search --image-stream=postgresql | grep openshift/postgresql-92-centos7)" ]
61
+[ "$(oc new-app -S --image-stream=python | grep openshift/python-33-centos7)" ]
62
+[ "$(oc new-app -S --image-stream=ruby | grep openshift/ruby-20-centos7)" ]
63
+[ "$(oc new-app -S --image-stream=wildfly | grep openshift/wildfly-8-centos)" ]
64
+[ "$(oc new-app --search --template=ruby-helloworld-sample | grep ruby-helloworld-sample)" ]
65
+# check search - no matches
66
+[ "$(oc new-app -S foo-the-bar 2>&1 | grep 'no matches found')" ]
67
+[ "$(oc new-app --search winter-is-coming 2>&1 | grep 'no matches found')" ]
68
+# check search - mutually exclusive flags
69
+[ "$(oc new-app -S mysql --env=FOO=BAR 2>&1 | grep "can't be used")" ]
70
+[ "$(oc new-app --search mysql --code=https://github.com/openshift/ruby-hello-world 2>&1 | grep "can't be used")" ]
71
+[ "$(oc new-app --search mysql --param=FOO=BAR 2>&1 | grep "can't be used")" ]
72
+oc delete imageStreams --all
73
+# check that we can create from the template without errors
74
+oc new-app ruby-helloworld-sample -l app=helloworld
75
+oc delete all -l app=helloworld
76
+# create from template with code explicitly set is not supported
77
+[ ! "$(oc new-app ruby-helloworld-sample~git@github.com/mfojtik/sinatra-app-example)" ]
78
+oc delete template ruby-helloworld-sample
79
+# override component names
80
+[ "$(oc new-app mysql --name=db | grep db)" ]
81
+oc new-app https://github.com/openshift/ruby-hello-world -l app=ruby
82
+oc delete all -l app=ruby
83
+echo "new-app: ok"
0 84
new file mode 100755
... ...
@@ -0,0 +1,15 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates user level policy
7
+
8
+oc policy add-role-to-group cluster-admin system:unauthenticated
9
+oc policy add-role-to-user cluster-admin system:no-user
10
+oc policy remove-role-from-group cluster-admin system:unauthenticated
11
+oc policy remove-role-from-user cluster-admin system:no-user
12
+oc policy remove-group system:unauthenticated
13
+oc policy remove-user system:no-user
14
+echo "policy: ok"
0 15
new file mode 100755
... ...
@@ -0,0 +1,32 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates secret interaction
7
+
8
+oc secrets new-dockercfg dockercfg --docker-username=sample-user --docker-password=sample-password --docker-email=fake@example.org
9
+# can't use a go template here because the output needs to be base64 decoded.  base64 isn't installed by default in all distros
10
+oc describe secrets/dockercfg | grep "dockercfg:" | awk '{print $2}' > ${HOME}/dockerconfig
11
+oc secrets new from-file .dockercfg=${HOME}/dockerconfig
12
+# check to make sure the type was correctly auto-detected
13
+[ "$(oc get secret/from-file -t "{{ .type }}" | grep 'kubernetes.io/dockercfg')" ]
14
+# make sure the -o works correctly
15
+[ "$(oc secrets new-dockercfg dockercfg --docker-username=sample-user --docker-password=sample-password --docker-email=fake@example.org -o yaml | grep "kubernetes.io/dockercfg")" ]
16
+[ "$(oc secrets new from-file .dockercfg=${HOME}/dockerconfig -o yaml | grep "kubernetes.io/dockercfg")" ]
17
+# check to make sure malformed names fail as expected
18
+[ "$(oc secrets new bad-name .docker=cfg=${HOME}/dockerconfig 2>&1 | grep "error: Key names or file paths cannot contain '='.")" ] 
19
+
20
+
21
+# attach secrets to service account
22
+# single secret with prefix
23
+oc secrets add serviceaccounts/deployer secrets/dockercfg
24
+# don't add the same secret twice
25
+oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file
26
+# make sure we can add as as pull secret
27
+oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file --for=pull
28
+# make sure we can add as as pull secret and mount secret at once
29
+oc secrets add serviceaccounts/deployer secrets/dockercfg secrets/from-file --for=pull,mount
30
+echo "secrets: ok"
31
+
0 32
new file mode 100755
... ...
@@ -0,0 +1,25 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates template commands
7
+
8
+oc get templates
9
+oc create -f examples/sample-app/application-template-dockerbuild.json
10
+oc get templates
11
+oc get templates ruby-helloworld-sample
12
+oc get template ruby-helloworld-sample -o json | oc process -f -
13
+oc process ruby-helloworld-sample
14
+oc describe templates ruby-helloworld-sample
15
+[ "$(oc describe templates ruby-helloworld-sample | grep -E "BuildConfig.*ruby-sample-build")" ]
16
+oc delete templates ruby-helloworld-sample
17
+oc get templates
18
+# TODO: create directly from template
19
+echo "templates: ok"
20
+
21
+oc process -f test/templates/fixtures/guestbook.json -l app=guestbook | oc create -f -
22
+oc status
23
+[ "$(oc status | grep frontend-service)" ]
24
+echo "template+config: ok"
0 25
new file mode 100755
... ...
@@ -0,0 +1,28 @@
0
+#!/bin/bash
1
+
2
+set -o errexit
3
+set -o nounset
4
+set -o pipefail
5
+
6
+# This test validates the 'volume' command
7
+
8
+oc create -f test/integration/fixtures/test-deployment-config.json
9
+
10
+[ "$(oc volume dc/test-deployment-config --list | grep vol1)" ]
11
+[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /opt)" ]
12
+[ "$(oc volume dc/test-deployment-config --add --name=vol1 --type=secret --secret-name='$ecret' -m /data | grep overwrite)" ]
13
+[ "$(oc volume dc/test-deployment-config --add --name=vol1 --type=emptyDir -m /data --overwrite)" ]
14
+[ "$(oc volume dc/test-deployment-config --add -m /opt | grep exists)" ]
15
+[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /etc -c 'ruby' --overwrite | grep warning)" ]
16
+[ "$(oc volume dc/test-deployment-config --add --name=vol2 -m /etc -c 'ruby*' --overwrite)" ]
17
+[ "$(oc volume dc/test-deployment-config --list --name=vol2 | grep /etc)" ]
18
+[ "$(oc volume dc/test-deployment-config --add --name=vol3 -o yaml | grep vol3)" ]
19
+[ "$(oc volume dc/test-deployment-config --list --name=vol3 | grep 'not found')" ]
20
+[ "$(oc volume dc/test-deployment-config --remove 2>&1 | grep confirm)" ]
21
+[ "$(oc volume dc/test-deployment-config --remove --name=vol2)" ]
22
+[ ! "$(oc volume dc/test-deployment-config --list | grep vol2)" ]
23
+[ "$(oc volume dc/test-deployment-config --remove --confirm)" ]
24
+[ ! "$(oc volume dc/test-deployment-config --list | grep vol1)" ]
25
+
26
+oc delete dc/test-deployment-config
27
+echo "volumes: ok"
0 28
\ No newline at end of file