Top Level Namespace

Included Modules

Extended Modules

Defined in:

Constant Summary

BASE_CONFIG = "./config.yml"
CHAOS_CONTAINER_KILL = Base64.decode_string("YXBpVmVyc2lvbjogY2hhb3MtbWVzaC5vcmcvdjFhbHBoYTEKa2luZDogUG9kQ2hhb3MKbWV0YWRh\ndGE6CiAgbmFtZTogY29udGFpbmVyLWtpbGwKICBuYW1lc3BhY2U6IGRlZmF1bHQKc3BlYzoKICBh\nY3Rpb246IGNvbnRhaW5lci1raWxsCiAgbW9kZTogb25lCiAgY29udGFpbmVyTmFtZTogInRlc3Qt\nc2VsZWN0b3IiCiAgc2VsZWN0b3I6CiAgICBsYWJlbFNlbGVjdG9yczoKICAgICAgJ3Rlc3Qtc2Vs\nZWN0b3InOiAndGVzdC1zZWxlY3RvcicKICBzY2hlZHVsZXI6CiAgICBjcm9uOiAiQGV2ZXJ5IDMw\ncyIK\n")
CHAOS_CPU_HOG = Base64.decode_string("YXBpVmVyc2lvbjogY2hhb3MtbWVzaC5vcmcvdjFhbHBoYTEKa2luZDogU3RyZXNzQ2hhb3MKbWV0\nYWRhdGE6CiAgbmFtZTogY3B1LWhvZy10ZXN0CiAgbmFtZXNwYWNlOiBkZWZhdWx0CnNwZWM6CiAg\nbW9kZTogb25lCiAgc2VsZWN0b3I6CiAgICBsYWJlbFNlbGVjdG9yczoKICAgICAgJ3Rlc3Qtc2Vs\nZWN0b3InOiAndGVzdC1zZWxlY3RvcicKICBzdHJlc3NvcnM6IAogICAgY3B1OiAKICAgICAgd29y\na2VyczogMQogICAgICBsb2FkOiAxMDAKICBkdXJhdGlvbjogIjMwcyIKICBzY2hlZHVsZXI6CiAg\nICBjcm9uOiAiQGV2ZXJ5IDJtIgo=\n")
CHAOS_MESH_VERSION = "v0.8.0"
CHAOS_NETWORK_LOSS = Base64.decode_string("YXBpVmVyc2lvbjogY2hhb3MtbWVzaC5vcmcvdjFhbHBoYTEKa2luZDogTmV0d29ya0NoYW9zCm1l\ndGFkYXRhOgogIG5hbWU6IG5ldHdvcmstbG9zcy10ZXN0CiAgbmFtZXNwYWNlOiBkZWZhdWx0CnNw\nZWM6CiAgYWN0aW9uOiBsb3NzCiAgbW9kZTogb25lCiAgc2VsZWN0b3I6CiAgICBsYWJlbFNlbGVj\ndG9yczoKICAgICAgJ3Rlc3Qtc2VsZWN0b3InOiAndGVzdC1zZWxlY3RvcicKICBsb3NzOgogICAg\nbG9zczogJzEwMCcKICAgIGNvcnJlbGF0aW9uOiAnMTAwJwogIGR1cmF0aW9uOiAnNDBzJwogIHNj\naGVkdWxlcjoKICAgIGNyb246ICdAZXZlcnkgNjAwcycK\n")
CLUSTER_DEFAULT_NAMESPACE = "default"

(kosstennbl) Needed only for manifest deployments, where we don't have control over installation namespace

CNF_DIR = "installed_cnf_files"
CNF_INSTALL_LOG_FILE = File.join(CNF_TEMP_FILES_DIR, "installation.log")
CNF_TEMP_FILES_DIR = File.join(CNF_DIR, "temp_files")
COMMON_MANIFEST_FILE_PATH = "#{CNF_DIR}/common_manifest.yml"
CONFIG_FILE = "cnf-testsuite.yml"
CONSTRAINT_TEMPLATE = Base64.decode_string("YXBpVmVyc2lvbjogdGVtcGxhdGVzLmdhdGVrZWVwZXIuc2gvdjFiZXRhMQpraW5kOiBDb25zdHJh\naW50VGVtcGxhdGUKbWV0YWRhdGE6CiAgbmFtZTogcmVxdWlyZXRhZ3MKc3BlYzoKICBjcmQ6CiAg\nICBzcGVjOgogICAgICBuYW1lczoKICAgICAgICBraW5kOiBSZXF1aXJlVGFncwogIHRhcmdldHM6\nCiAgICAtIHRhcmdldDogYWRtaXNzaW9uLms4cy5nYXRla2VlcGVyLnNoCiAgICAgIHJlZ286IHwK\nICAgICAgICBwYWNrYWdlIHJlcXVpcmV0YWdzCiAgICAgICAgdmlvbGF0aW9uW3sibXNnIjogbXNn\nLCAiZGV0YWlscyI6IHt9fV17CiAgICAgICAgICBpbnB1dC5yZXZpZXcua2luZC5raW5kID09ICJQ\nb2QiCiAgICAgICAgICBpbWFnZSA6PSBpbnB1dC5yZXZpZXcub2JqZWN0LnNwZWMuY29udGFpbmVy\nc1tfXS5pbWFnZQogICAgICAgICAgZW5zdXJlKGltYWdlKQogICAgICAgICAgbXNnIDo9IHNwcmlu\ndGYoIlZpb2xhdGlvbiBmb3IgUG9kICV2LCBpdCB1c2VzIGFuIGltYWdlIHRhZyB0aGF0IGlzIG5v\ndCB2ZXJzaW9uZWQiLCBbaW5wdXQucmV2aWV3Lm9iamVjdC5tZXRhZGF0YS5uYW1lXSkKICAgICAg\nICB9CiAgICAgICAgCiAgICAgICAgZW5zdXJlKGltYWdlKSB7CiAgICAgICAgICBjb250YWlucyhp\nbWFnZSwgIjpsYXRlc3QiKQogICAgICAgIH0KICAgICAgICBlbnN1cmUoaW1hZ2UpIHsKICAgICAg\nICAgIG5vdCBjb250YWlucyhpbWFnZSwiOiIpCiAgICAgICAgfQoK\n")
DEFAULT_CNF_NAMESPACE = "cnf-default"
DEFAULT_POINTSFILENAME = "points_v1.yml"

todo move to helm module CHART_YAML = "Chart.yaml"

DEPLOYMENT_MANIFEST_FILE_NAME = "deployment_manifest.yml"
DEPLOYMENTS_DIR = File.join(CNF_DIR, "deployments")
DISABLE_CNI = Base64.decode_string("a2luZDogQ2x1c3RlcgphcGlWZXJzaW9uOiBraW5kLngtazhzLmlvL3YxYWxwaGE0Cm5ldHdvcmtp\nbmc6CiAgZGlzYWJsZURlZmF1bHRDTkk6IHRydWUgIyBkaXNhYmxlIGtpbmRuZXQKICAjICBwb2RT\ndWJuZXQ6IDE5Mi4xNjguMC4wLzE2ICMgc2V0IHRvIENhbGljbydzIGRlZmF1bHQgc3VibmV0Cg==\n")
ELASTIC_PROVISIONING_DRIVERS_REGEX = /kubernetes.io\/aws-ebs|kubernetes.io\/azure-file|kubernetes.io\/azure-disk|kubernetes.io\/cinder|kubernetes.io\/gce-pd|kubernetes.io\/glusterfs|kubernetes.io\/quobyte|kubernetes.io\/rbd|kubernetes.io\/vsphere-volume|kubernetes.io\/portworx-volume|kubernetes.io\/scaleio|kubernetes.io\/storageos|rook-ceph.rbd.csi.ceph.com/
ELASTIC_PROVISIONING_DRIVERS_REGEX_SPEC = /kubernetes.io\/aws-ebs|kubernetes.io\/azure-file|kubernetes.io\/azure-disk|kubernetes.io\/cinder|kubernetes.io\/gce-pd|kubernetes.io\/glusterfs|kubernetes.io\/quobyte|kubernetes.io\/rbd|kubernetes.io\/vsphere-volume|kubernetes.io\/portworx-volume|kubernetes.io\/scaleio|kubernetes.io\/storageos|rook-ceph.rbd.csi.ceph.com|rancher.io\/local-path/
EMPTY_JSON = JSON.parse("{}")
EMPTY_JSON_ARRAY = JSON.parse("[]")
ENFORCE_IMAGE_TAG = Base64.decode_string("YXBpVmVyc2lvbjogY29uc3RyYWludHMuZ2F0ZWtlZXBlci5zaC92MWJldGExCmtpbmQ6IFJlcXVp\ncmVUYWdzCm1ldGFkYXRhOgogIG5hbWU6IGJsb2NrLWxhdGVzdC10YWcKc3BlYzoKICBtYXRjaDoK\nICAgIGtpbmRzOgogICAgICAtIGFwaUdyb3VwczogWyIiXQogICAgICAgIGtpbmRzOiBbIlBvZCJd\nCiAgICAgIAo=\n")
ERROR = "error"
ESSENTIAL_PASSED_THRESHOLD = 15
EXCLUDE_NAMESPACES = ["kube-system", "kube-public", "kube-node-lease", "local-path-storage", "litmus", TESTSUITE_NAMESPACE]
FAILED = "failed"
FLUENTBIT_VALUES = Base64.decode_string("Y29uZmlnOgogIG91dHB1dHM6IHwKICAgIFtPVVRQVVRdCiAgICAgICAgTmFtZSBmaWxlCiAgICAg\nICAgRm9ybWF0IHRlbXBsYXRlCiAgICAgICAgUGF0aCAvdGVzdGRhdGE=\n")
FLUENTD_BITNAMI_VALUES = Base64.decode_string("YWdncmVnYXRvcjoKICBlbmFibGVkOiBmYWxzZQo=\n")
FLUENTD_VALUES = Base64.decode_string("ZmlsZUNvbmZpZ3M6CiAgMDRfb3V0cHV0cy5jb25mOiB8LQogICAgPGxhYmVsIEBPVVRQVVQ+CiAg\nICAgIDxtYXRjaCAqKj4KICAgICAgICBAdHlwZSBmaWxlCiAgICAgICAgcGF0aCAiL3Rlc3RkYXRh\nIgogICAgICA8L21hdGNoPgogICAgPC9sYWJlbD4K\n")
GENERIC_OPERATION_TIMEOUT = ENV.has_key?("CNF_TESTSUITE_GENERIC_OPERATION_TIMEOUT") ? ENV["CNF_TESTSUITE_GENERIC_OPERATION_TIMEOUT"].to_i : 60
IGNORED_SECRET_TYPES = ["kubernetes.io/service-account-token", "kubernetes.io/dockercfg", "kubernetes.io/dockerconfigjson", "helm.sh/release.v1"]
KIND_VERSION = "0.17.0"
KUBESCAPE_FRAMEWORK_VERSION = "1.0.316"
KUBESCAPE_VERSION = "3.0.30"
LITMUS_CHAOS_TEST_TIMEOUT = ENV.has_key?("CNF_TESTSUITE_LITMUS_CHAOS_TEST_TIMEOUT") ? ENV["CNF_TESTSUITE_LITMUS_CHAOS_TEST_TIMEOUT"].to_i : 1800
NA = "na"
NODE_DRAIN_TOTAL_CHAOS_DURATION = ENV.has_key?("CNF_TESTSUITE_NODE_DRAIN_TOTAL_CHAOS_DURATION") ? ENV["CNF_TESTSUITE_NODE_DRAIN_TOTAL_CHAOS_DURATION"].to_i : 90
NODE_FAILED_VALUES = Base64.decode_string("dG9sZXJhdGlvbnM6Ci0ga2V5OiAibm9kZS5rdWJlcm5ldGVzLmlvL3VucmVhY2hhYmxlIgogIG9w\nZXJhdG9yOiAiRXhpc3RzIgogIGVmZmVjdDogIk5vRXhlY3V0ZSIKICB0b2xlcmF0aW9uU2Vjb25k\nczogMQotIGtleTogIm5vZGUua3ViZXJuZXRlcy5pby9ub3QtcmVhZHkiCiAgb3BlcmF0b3I6ICJF\neGlzdHMiCiAgZWZmZWN0OiAiTm9FeGVjdXRlIgogIHRvbGVyYXRpb25TZWNvbmRzOiAxCgo=\n")
NODE_READINESS_TIMEOUT = ENV.has_key?("CNF_TESTSUITE_NODE_READINESS_TIMEOUT") ? ENV["CNF_TESTSUITE_NODE_READINESS_TIMEOUT"].to_i : 240
PASSED = "passed"
PLOG = Log.for("Platform")
POD_READINESS_TIMEOUT = ENV.has_key?("CNF_TESTSUITE_POD_READINESS_TIMEOUT") ? ENV["CNF_TESTSUITE_POD_READINESS_TIMEOUT"].to_i : 180
POINTSFILE = Base64.decode_string("LS0tCi0gbmFtZTogZGVmYXVsdF9zY29yaW5nCiAgdGFnczogCiAgcGFzczogNQogIGZhaWw6IDAg\nCiAgc2tpcHBlZDogMCAKICBuYTogMCAKICBuZXV0cmFsOiAwIAoKLSBuYW1lOiByZWFzb25hYmxl\nX2ltYWdlX3NpemUKICBlbW9qaTogIuKalvCfkYAiCiAgdGFnczogW21pY3Jvc2VydmljZSwgZHlu\nYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KLSBuYW1lOiBzcGVjaWFsaXplZF9pbml0X3N5c3RlbQog\nIGVtb2ppOiAi8J+agCIKICB0YWdzOiBbbWljcm9zZXJ2aWNlLCBkeW5hbWljLCB3b3JrbG9hZCwg\nY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAotIG5hbWU6IHJlYXNvbmFibGVfc3RhcnR1cF90\naW1lIAogIHRhZ3M6IFttaWNyb3NlcnZpY2UsIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCi0g\nbmFtZTogc2luZ2xlX3Byb2Nlc3NfdHlwZQogIGVtb2ppOiAi4pqW8J+RgCIKICB0YWdzOiBbbWlj\ncm9zZXJ2aWNlLCBkeW5hbWljLCB3b3JrbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEw\nMAotIG5hbWU6IHpvbWJpZV9oYW5kbGVkCiAgZW1vamk6ICLimpbwn5GAIgogIHRhZ3M6IFttaWNy\nb3NlcnZpY2UsIGR5bmFtaWMsIHdvcmtsb2FkLCBjZXJ0LCBlc3NlbnRpYWxdCiAgcGFzczogMTAw\nCi0gbmFtZTogc2VydmljZV9kaXNjb3ZlcnkKICBlbW9qaTogIuKalvCfkYAiCiAgdGFnczogW21p\nY3Jvc2VydmljZSwgZHluYW1pYywgd29ya2xvYWQsIGJvbnVzXQogIHBhc3M6IDEKICBmYWlsOiAw\nCi0gbmFtZTogc2hhcmVkX2RhdGFiYXNlCiAgZW1vamk6ICLwn5K+IgogIHRhZ3M6IFttaWNyb3Nl\ncnZpY2UsIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCi0gbmFtZTogc2lnX3Rlcm1faGFuZGxl\nZAogIGVtb2ppOiAi4pqW8J+RgCIKICB0YWdzOiBbbWljcm9zZXJ2aWNlLCBkeW5hbWljLCB3b3Jr\nbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAotIG5hbWU6IGNuaV9jb21wYXRpYmxl\nCiAgZW1vamk6ICLwn5ST8J+UkSIKICB0YWdzOiBbY29tcGF0aWJpbGl0eSwgZHluYW1pYywgd29y\na2xvYWRdCiMgLSBuYW1lOiBjbmlfc3BlYyAKIyAgdGFnczogY29tcGF0aWJpbGl0eSwgZHluYW1p\nYwojLSBuYW1lOiBhcGlfc25vb3BfYWxwaGEgCiMgIHRhZ3M6IGNvbXBhdGliaWxpdHksIGR5bmFt\naWMKIy0gbmFtZTogYXBpX3Nub29wX2JldGEgCiMgIHRhZ3M6IGNvbXBhdGliaWxpdHksIGR5bmFt\naWMKIy0gbmFtZTogYXBpX3Nub29wX2dlbmVyYWxfYXBpcyAKIyAgdGFnczogY29tcGF0aWJpbGl0\neSwgZHluYW1pYwoKIy0gbmFtZTogcmVzZXRfY25mIAojICB0YWdzOiBzdGF0ZSwgZHluYW1pYywg\nY29uZmlndXJhdGlvbgojLSBuYW1lOiBjaGVja19yZWFwZWQgCiMgIHRhZ3M6IHN0YXRlLCBkeW5h\nbWljLCBjb25maWd1cmF0aW9uCgotIG5hbWU6IHByaXZpbGVnZV9lc2NhbGF0aW9uCiAgZW1vamk6\nICLwn5ST8J+UkSIKICB0YWdzOiBbc2VjdXJpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxd\nCi0gbmFtZTogc3ltbGlua19maWxlX3N5c3RlbSAKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6\nIFtzZWN1cml0eSwgZHluYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KLSBuYW1lOiBhcHBsaWNhdGlv\nbl9jcmVkZW50aWFscyAKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6IFtzZWN1cml0eSwgZHlu\nYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KLSBuYW1lOiBob3N0X25ldHdvcmsgCiAgZW1vamk6ICLw\nn5ST8J+UkSIKICB0YWdzOiBbc2VjdXJpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCiMt\nIG5hbWU6IHNoZWxscyAKIyAgdGFnczogc2VjdXJpdHksIGR5bmFtaWMKIy0gbmFtZTogcHJvdGVj\ndGVkX2FjY2VzcyAKIyAgdGFnczogc2VjdXJpdHksIGR5bmFtaWMKCi0gbmFtZTogaW5jcmVhc2Vf\nZGVjcmVhc2VfY2FwYWNpdHkKICBlbW9qaTogIvCfk6bwn5OI8J+TiSIKICB0YWdzOiBbY29tcGF0\naWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQsIGNlcnQsIGVzc2VudGlhbF0KICBwYXNzOiAxMDAK\nIy0gbmFtZTogc21hbGxfYXV0b3NjYWxpbmcgCiMgIHRhZ3M6IGNvbXBhdGliaWxpdHksIGR5bmFt\naWMsIHdvcmtsb2FkCiMtIG5hbWU6IGxhcmdlX2F1dG9zY2FsaW5nIAojICB0YWdzOiBjb21wYXRp\nYmlsaXR5LCBkeW5hbWljLCB3b3JrbG9hZAojIC0gbmFtZTogbmV0d29ya19jaGFvcyAKIyAgIHRh\nZ3M6IHJlc2lsaWVuY2UsIGR5bmFtaWMsIHdvcmtsb2FkCi0gbmFtZTogcG9kX25ldHdvcmtfbGF0\nZW5jeQogIGVtb2ppOiAi8J+Xoe+4j/CfkoDimbsiCiAgdGFnczogW3Jlc2lsaWVuY2UsIGR5bmFt\naWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxCiAgZmFpbDogMAotIG5hbWU6IHBvZF9uZXR3\nb3JrX2NvcnJ1cHRpb24KICBlbW9qaTogIvCfl6HvuI/wn5KA4pm7IgogIHRhZ3M6IFtyZXNpbGll\nbmNlLCBkeW5hbWljLCB3b3JrbG9hZCwgYm9udXNdCiAgcGFzczogMQogIGZhaWw6IDAKLSBuYW1l\nOiBwb2RfbmV0d29ya19kdXBsaWNhdGlvbgogIGVtb2ppOiAi8J+Xoe+4j/CfkoDimbsiCiAgdGFn\nczogW3Jlc2lsaWVuY2UsIGR5bmFtaWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxCiAgZmFp\nbDogMAotIG5hbWU6IHBvZF9kZWxldGUKICBlbW9qaTogIvCfl6HvuI/wn5KA4pm7IgogIHRhZ3M6\nIFtyZXNpbGllbmNlLCBkeW5hbWljLCB3b3JrbG9hZCwgbm9ybWFsXQotIG5hbWU6IHBvZF9pb19z\ndHJlc3MKICBlbW9qaTogIvCfl6HvuI/wn5KA4pm7IgogIHRhZ3M6IFtyZXNpbGllbmNlLCBkeW5h\nbWljLCB3b3JrbG9hZCwgYm9udXNdCiAgcGFzczogMQogIGZhaWw6IDAKLSBuYW1lOiBwb2RfbWVt\nb3J5X2hvZwogIGVtb2ppOiAi8J+Xoe+4j/CfkoDimbsiCiAgdGFnczogW3Jlc2lsaWVuY2UsIGR5\nbmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCi0gbmFtZTogZGlza19maWxsCiAgZW1vamk6ICLwn5eh\n77iP8J+SgOKZuyIKICB0YWdzOiBbcmVzaWxpZW5jZSwgZHluYW1pYywgd29ya2xvYWQsIG5vcm1h\nbF0KLSBuYW1lOiBwb2RfZG5zX2Vycm9yCiAgZW1vamk6ICLwn5eh77iP8J+SgOKZuyIKICB0YWdz\nOiBbcmVzaWxpZW5jZSwgZHluYW1pYywgd29ya2xvYWRdCiMtIG5hbWU6IGV4dGVybmFsX3JldHJ5\nIAojICB0YWdzOiBzY2FsYWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQKCiMtIG5hbWU6IHZlcnNp\nb25lZF9oZWxtX2NoYXJ0CiMgIHRhZ3M6IGNvbmZpZ3VyYXRpb24sIGR5bmFtaWMsIHdvcmtsb2Fk\nCi0gbmFtZTogdmVyc2lvbmVkX3RhZwogIGVtb2ppOiAi8J+Pt++4jyIKICB0YWdzOiBbY29uZmln\ndXJhdGlvbiwgZHluYW1pYywgd29ya2xvYWRdCi0gbmFtZTogaXBfYWRkcmVzc2VzCiAgZW1vamk6\nICLwn5O28J+Pg+KPsu+4jyIKICBwYXNzOiAwCiAgZmFpbDogLTEgCiAgdGFnczogW2NvbmZpZ3Vy\nYXRpb24sIHN0YXRpYywgd29ya2xvYWRdCi0gbmFtZTogb3BlcmF0b3JfaW5zdGFsbGVkCiAgZW1v\namk6ICLimpbvuI/wn5GAIgogIHRhZ3M6IFtjb25maWd1cmF0aW9uLCBkeW5hbWljLCB3b3JrbG9h\nZCwgYm9udXNdCi0gbmFtZTogbGl2ZW5lc3MKICBlbW9qaTogIuKOiPCfp6siCiAgdGFnczogW3Jl\nc2lsaWVuY2UsIGR5bmFtaWMsIHdvcmtsb2FkLCBjZXJ0LCBlc3NlbnRpYWxdCiAgcGFzczogMTAw\nCi0gbmFtZTogcmVhZGluZXNzCiAgZW1vamk6ICLijojwn6erIgogIHRhZ3M6IFtyZXNpbGllbmNl\nLCBkeW5hbWljLCB3b3JrbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAojLSBuYW1l\nOiBub192b2x1bWVfd2l0aF9jb25maWd1cmF0aW9uCiMgIHRhZ3M6IGNvbmZpZ3VyYXRpb24sIGR5\nbmFtaWMKLSBuYW1lOiByb2xsaW5nX3VwZGF0ZQogIHRhZ3M6IFtjb21wYXRpYmlsaXR5LCBkeW5h\nbWljLCB3b3JrbG9hZF0KLSBuYW1lOiByb2xsaW5nX2Rvd25ncmFkZQogIHRhZ3M6IFtjb21wYXRp\nYmlsaXR5LCBkeW5hbWljLCB3b3JrbG9hZF0KLSBuYW1lOiByb2xsaW5nX3ZlcnNpb25fY2hhbmdl\nCiAgdGFnczogW2NvbXBhdGliaWxpdHksIGR5bmFtaWMsIHdvcmtsb2FkXQotIG5hbWU6IHJvbGxi\nYWNrCiAgdGFnczogW2NvbXBhdGliaWxpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCi0g\nbmFtZTogZGVwcmVjYXRlZF9rOHNfZmVhdHVyZXMKICB0YWdzOiBbY29tcGF0aWJpbGl0eSwgZHlu\nYW1pYywgd29ya2xvYWRdCi0gbmFtZTogbm9kZXBvcnRfbm90X3VzZWQKICB0YWdzOiBbY29uZmln\ndXJhdGlvbiwgZHluYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KLSBuYW1lOiBob3N0cG9ydF9ub3Rf\ndXNlZAogIHRhZ3M6IFtjb25maWd1cmF0aW9uLCBkeW5hbWljLCB3b3JrbG9hZCwgY2VydCwgZXNz\nZW50aWFsXQogIHBhc3M6IDEwMAotIG5hbWU6IGhhcmRjb2RlZF9pcF9hZGRyZXNzZXNfaW5fazhz\nX3J1bnRpbWVfY29uZmlndXJhdGlvbgogIHRhZ3M6IFtjb25maWd1cmF0aW9uLCBkeW5hbWljLCB3\nb3JrbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAotIG5hbWU6IHNlY3JldHNfdXNl\nZAogIGVtb2ppOiAi8J+nqyIKICB0YWdzOiBbY29uZmlndXJhdGlvbiwgZHluYW1pYywgd29ya2xv\nYWQsIGJvbnVzXQogIHBhc3M6IDEKICBmYWlsOiAwCi0gbmFtZTogaW1tdXRhYmxlX2NvbmZpZ21h\ncAogIGVtb2ppOiAi4pqW77iPIgogIHRhZ3M6IFtjb25maWd1cmF0aW9uLCBkeW5hbWljLCB3b3Jr\nbG9hZCwgYm9udXNdCiAgcGFzczogMQogIGZhaWw6IDAgCgojLSBuYW1lOiBmbHVlbnRkX3RyYWZm\naWMKIyAgdGFnczogb2JzZXJ2YWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQKIy0gbmFtZTogamFl\nZ2VyX3RyYWZmaWMKIyAgdGFnczogb2JzZXJ2YWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQKIy0g\nbmFtZTogcHJvbWV0aGV1c190cmFmZmljCiMgIHRhZ3M6IG9ic2VydmFiaWxpdHksIGR5bmFtaWMs\nIHdvcmtsb2FkCiMtIG5hbWU6IG9wZW50ZWxlbWV0cnlfY29tcGF0aWJsZQojICB0YWdzOiBvYnNl\ncnZhYmlsaXR5LCBkeW5hbWljLCB3b3JrbG9hZAojLSBuYW1lOiBvcGVubWV0cmljX2NvbXBhdGli\nbGUKIyAgdGFnczogb2JzZXJ2YWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQKCi0gbmFtZTogaGVs\nbV9kZXBsb3kKICBlbW9qaTogIuKamfCfm6DvuI/irIbimIEiCiAgdGFnczogW2NvbXBhdGliaWxp\ndHksIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxdCi0gbmFtZTogaGVsbV9jaGFydF92YWxpZAog\nIGVtb2ppOiAi4o6I8J+TneKYkSIKICB0YWdzOiBbY29tcGF0aWJpbGl0eSwgZHluYW1pYywgd29y\na2xvYWQsIG5vcm1hbF0KLSBuYW1lOiBoZWxtX2NoYXJ0X3B1Ymxpc2hlZAogIGVtb2ppOiAi4o6I\n8J+TpvCfjJAiCiAgdGFnczogW2NvbXBhdGliaWxpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBub3Jt\nYWxdCiAgCiMgLSBuYW1lOiBjaGFvc19uZXR3b3JrX2xvc3MgCiMgICB0YWdzOiByZXNpbGllbmNl\nLCBkeW5hbWljLCB3b3JrbG9hZAojIC0gbmFtZTogY2hhb3NfY3B1X2hvZwojICAgdGFnczogcmVz\naWxpZW5jZSwgZHluYW1pYywgd29ya2xvYWQKIyAtIG5hbWU6IGNoYW9zX2NvbnRhaW5lcl9raWxs\nCiMgICB0YWdzOiByZXNpbGllbmNlLCBkeW5hbWljLCB3b3JrbG9hZAoKLSBuYW1lOiBub19sb2Nh\nbF92b2x1bWVfY29uZmlndXJhdGlvbgogIGVtb2ppOiAi8J+SviIKICB0YWdzOiBbc3RhdGUsIGR5\nbmFtaWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxCiAgZmFpbDogMAotIG5hbWU6IGVsYXN0\naWNfdm9sdW1lcwogIGVtb2ppOiAi8J+nqyIKICB0YWdzOiBbc3RhdGUsIGR5bmFtaWMsIHdvcmts\nb2FkLCBib251c10KICBwYXNzOiAxCiAgZmFpbDogMAotIG5hbWU6IGRhdGFiYXNlX3BlcnNpc3Rl\nbmNlCiAgZW1vamk6ICLwn6erIgogIHRhZ3M6IFtzdGF0ZSwgZHluYW1pYywgd29ya2xvYWRdCiAg\ncGFzczU6IDUgCiAgcGFzczM6IDMgCiAgZmFpbDogLTEKLSBuYW1lOiBub2RlX2RyYWluCiAgZW1v\namk6ICLwn5eh77iP8J+SgOKZuyIKICB0YWdzOiBbc3RhdGUsIGR5bmFtaWMsIHdvcmtsb2FkLCBj\nZXJ0LCBlc3NlbnRpYWxdCiAgcGFzczogMTAwCgojLSBuYW1lOiBoYXJkd2FyZV9hbmRfc2NoZWR1\nbGluZwojICB0YWdzOiBoYXJkd2FyZSwgZHluYW1pYywgd29ya2xvYWQKIy0gbmFtZTogc3RhdGlj\nX2FjY2Vzc2luZ19oYXJkd2FyZSAKIyAgdGFnczogaGFyZHdhcmUsIHN0YXRpYywgd29ya2xvYWQK\nIy0gbmFtZTogZHluYW1pY19hY2Nlc3NpbmdfaGFyZHdhcmUgCiMgIHRhZ3M6IGhhcmR3YXJlLCBk\neW5hbWljLCB3b3JrbG9hZAojLSBuYW1lOiBkaXJlY3RfaHVnZXBhZ2VzCiMgIHRhZ3M6IGhhcmR3\nYXJlLCBkeW5hbWljLCB3b3JrbG9hZAojLSBuYW1lOiBwZXJmb3JtYW5jZQojICB0YWdzOiBoYXJk\nd2FyZSwgZHluYW1pYywgd29ya2xvYWQKCi0gbmFtZTogazhzX2NvbmZvcm1hbmNlCiAgdGFnczog\nW3BsYXRmb3JtLCBkeW5hbWljXQotIG5hbWU6IGNsdXN0ZXJhcGlfZW5hYmxlZAogIGVtb2ppOiAi\n4pyoIgogIHRhZ3M6IFtwbGF0Zm9ybSwgZHluYW1pY10KLSBuYW1lOiB3b3JrZXJfcmVib290X3Jl\nY292ZXJ5IAogIHRhZ3M6IFsicGxhdGZvcm0iLCAicGxhdGZvcm06cmVzaWxpZW5jZSIsIGR5bmFt\naWNdCi0gbmFtZTogb2NpX2NvbXBsaWFudAogIGVtcGppOiAi8J+TtuKYoCIKICB0YWdzOiBbInBs\nYXRmb3JtIiwgInBsYXRmb3JtOmhhcmR3YXJlX2FuZF9zY2hlZHVsaW5nIiwgZHluYW1pY10KLSBu\nYW1lOiBjb250cm9sX3BsYW5lX2hhcmRlbmluZwogIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczog\nWyJwbGF0Zm9ybSIsICJwbGF0Zm9ybTpzZWN1cml0eSIsICJkeW5hbWljIl0KLSBuYW1lOiBjbHVz\ndGVyX2FkbWluCiAgZW1vamk6ICLwn5ST8J+UkSIKICB0YWdzOiBbInBsYXRmb3JtIiwgInBsYXRm\nb3JtOnNlY3VyaXR5IiwgImR5bmFtaWMiXQotIG5hbWU6IHZlcmlmeV9jb25maWdtYXBzX2VuY3J5\ncHRpb24KICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6IFsicGxhdGZvcm0iLCAicGxhdGZvcm06\nc2VjdXJpdHkiLCAiZHluYW1pYyJdCi0gbmFtZToga3ViZV9zdGF0ZV9tZXRyaWNzCiAgZW1vamk6\nICLwn5O24pigIgogIHRhZ3M6IFtwbGF0Zm9ybSwgInBsYXRmb3JtOm9ic2VydmFiaWxpdHkiLCBk\neW5hbWljXQotIG5hbWU6IG5vZGVfZXhwb3J0ZXIKICBlbW9qaTogIvCfk7bimKAiCiAgdGFnczog\nW3BsYXRmb3JtLCAicGxhdGZvcm06b2JzZXJ2YWJpbGl0eSIsIGR5bmFtaWNdCi0gbmFtZTogcHJv\nbWV0aGV1c19hZGFwdGVyCiAgZW1vamk6ICLwn5O24pigIgogIHRhZ3M6IFtwbGF0Zm9ybSwgInBs\nYXRmb3JtOm9ic2VydmFiaWxpdHkiLCBkeW5hbWljXQotIG5hbWU6IG1ldHJpY3Nfc2VydmVyCiAg\nZW1vamk6ICLwn5O24pigIgogIHRhZ3M6IFtwbGF0Zm9ybSwgInBsYXRmb3JtOm9ic2VydmFiaWxp\ndHkiLCBkeW5hbWljXQoKLSBuYW1lOiBzZXJ2aWNlX2FjY291bnRfbWFwcGluZwogIGVtb2ppOiAi\n8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWljLCB3b3JrbG9hZCwgbm9ybWFsXQoK\nLSBuYW1lOiBwcml2aWxlZ2VkX2NvbnRhaW5lcnMKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6\nIFtzZWN1cml0eSwgZHluYW1pYywgd29ya2xvYWQsIGNlcnQsIGVzc2VudGlhbF0KICBwYXNzOiAx\nMDAgCgotIG5hbWU6IG5vbl9yb290X2NvbnRhaW5lcnMKICBlbW9qaTogIvCflJPwn5SRIgogIHRh\nZ3M6IFtzZWN1cml0eSwgZHluYW1pYywgd29ya2xvYWQsIGNlcnQsIGVzc2VudGlhbF0KICBwYXNz\nOiAxMDAKCi0gbmFtZTogaG9zdF9waWRfaXBjX3ByaXZpbGVnZXMKICBlbW9qaTogIvCflJPwn5SR\nIgogIHRhZ3M6IFtzZWN1cml0eSwgZHluYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KCi0gbmFtZTog\nbGludXhfaGFyZGVuaW5nCiAgZW1vamk6ICLwn5ST8J+UkSIKICB0YWdzOiBbc2VjdXJpdHksIGR5\nbmFtaWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxIAogIGZhaWw6IDAgCgotIG5hbWU6IGNw\ndV9saW1pdHMKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6IFtzZWN1cml0eSwgZHluYW1pYywg\nd29ya2xvYWQsIGNlcnQsIGVzc2VudGlhbF0KICBwYXNzOiAxMDAKCi0gbmFtZTogbWVtb3J5X2xp\nbWl0cwogIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWljLCB3b3Jr\nbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAoKLSBuYW1lOiBpbW11dGFibGVfZmls\nZV9zeXN0ZW1zCiAgZW1vamk6ICLwn5ST8J+UkSIKICB0YWdzOiBbc2VjdXJpdHksIGR5bmFtaWMs\nIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxIAogIGZhaWw6IDAgCgotIG5hbWU6IGhvc3RwYXRo\nX21vdW50cwogIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWljLCB3\nb3JrbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAoKLSBuYW1lOiBpbmdyZXNzX2Vn\ncmVzc19ibG9ja2VkIAogIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5h\nbWljLCB3b3JrbG9hZCwgYm9udXNdCiAgcGFzczogMSAKICBmYWlsOiAwIAoKLSBuYW1lOiBpbnNl\nY3VyZV9jYXBhYmlsaXRpZXMKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6IFtzZWN1cml0eSwg\nZHluYW1pYywgd29ya2xvYWQsIG5vcm1hbF0KCi0gbmFtZTogc3lzY3RscwogIGVtb2ppOiAi8J+U\nk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWljLCB3b3JrbG9hZCwgbm9ybWFsXQoKLSBu\nYW1lOiBsb2dfb3V0cHV0CiAgZW1vamk6ICLwn5O24pig77iPIgogIHRhZ3M6IFtvYnNlcnZhYmls\naXR5LCBkeW5hbWljLCB3b3JrbG9hZCwgY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAotIG5h\nbWU6IHByb21ldGhldXNfdHJhZmZpYwogIGVtb2ppOiAi8J+TtuKYoO+4jyIKICB0YWdzOiBbb2Jz\nZXJ2YWJpbGl0eSwgZHluYW1pYywgd29ya2xvYWQsIGJvbnVzXQogIHBhc3M6IDEgCiAgZmFpbDog\nMCAKLSBuYW1lOiBvcGVuX21ldHJpY3MKICBlbW9qaTogIvCfk7bimKDvuI8iCiAgdGFnczogW29i\nc2VydmFiaWxpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxIAogIGZhaWw6\nIDAgCi0gbmFtZTogcm91dGVkX2xvZ3MKICBlbW9qaTogIvCfk7bimKDvuI8iCiAgdGFnczogW29i\nc2VydmFiaWxpdHksIGR5bmFtaWMsIHdvcmtsb2FkLCBib251c10KICBwYXNzOiAxIAogIGZhaWw6\nIDAgCi0gbmFtZTogdHJhY2luZwogIGVtb2ppOiAi4o6I8J+agCIKICB0YWdzOiBbb2JzZXJ2YWJp\nbGl0eSwgZHluYW1pYywgd29ya2xvYWQsIGJvbnVzXQogIHBhc3M6IDEgCiAgZmFpbDogMCAKLSBu\nYW1lOiBhbHBoYV9rOHNfYXBpcwogIGVtb2ppOiAi4q2V8J+UjSIKICB0YWdzOiBbY29uZmlndXJh\ndGlvbiwgZHluYW1pYywgd29ya2xvYWRdCgotIG5hbWU6IGNvbnRhaW5lcl9zb2NrX21vdW50cwog\nIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWljLCB3b3JrbG9hZCwg\nY2VydCwgZXNzZW50aWFsXQogIHBhc3M6IDEwMAoKLSBuYW1lOiByZXF1aXJlX2xhYmVscwogIGVt\nb2ppOiAi8J+Pt++4jyIKICB0YWdzOiBbY29uZmlndXJhdGlvbiwgZHluYW1pYywgd29ya2xvYWQs\nIG5vcm1hbF0KCi0gbmFtZTogaGVsbV90aWxsZXIKICBlbW9qaTogIvCflJPwn5SRIgogIHRhZ3M6\nIFsicGxhdGZvcm0iLCAicGxhdGZvcm06c2VjdXJpdHkiLCAiZHluYW1pYyJdCgotIG5hbWU6IGV4\ndGVybmFsX2lwcwogIGVtb2ppOiAi8J+Uk/CflJEiCiAgdGFnczogW3NlY3VyaXR5LCBkeW5hbWlj\nLCB3b3JrbG9hZCwgbm9ybWFsXQoKLSBuYW1lOiBzZWxpbnV4X29wdGlvbnMKICBlbW9qaTogIvCf\nlJPwn5SRIgogIHRhZ3M6IFtzZWN1cml0eSwgZHluYW1pYywgd29ya2xvYWQsIGNlcnQsIGVzc2Vu\ndGlhbF0KICBwYXNzOiAxMDAKCi0gbmFtZTogZGVmYXVsdF9uYW1lc3BhY2UKICBlbW9qaTogIvCf\nj7fvuI8iCiAgdGFnczogW2NvbmZpZ3VyYXRpb24sIGR5bmFtaWMsIHdvcmtsb2FkLCBub3JtYWxd\nCgotIG5hbWU6IGxhdGVzdF90YWcKICBlbW9qaTogIvCfj7fvuI8iCiAgdGFnczogW2NvbmZpZ3Vy\nYXRpb24sIGR5bmFtaWMsIHdvcmtsb2FkLCBjZXJ0LCBlc3NlbnRpYWxdCiAgcGFzczogMTAwCgot\nIG5hbWU6IHNtZl91cGZfaGVhcnRiZWF0IAogIHRhZ3M6IFs1ZywgZHluYW1pY10gCiAgCi0gbmFt\nZTogc3VjaV9lbmFibGVkCiAgdGFnczogWzVnLCBkeW5hbWljXQoKLSBuYW1lOiBvcmFuX2UyX2Nv\nbm5lY3Rpb24KICB0YWdzOiBbcmFuLCBkeW5hbWljXQo=\n")
REASONABLE_STARTUP_BUFFER = 10.0
REBOOT_DAEMON = Base64.decode_string("YXBpVmVyc2lvbjogYXBwcy92MQpraW5kOiBEYWVtb25TZXQKbWV0YWRhdGE6CiAgICBuYW1lOiBy\nZWJvb3QKc3BlYzoKICBzZWxlY3RvcjoKICAgIG1hdGNoTGFiZWxzOgogICAgICBuYW1lOiByZWJv\nb3QKICB0ZW1wbGF0ZToKICAgIG1ldGFkYXRhOgogICAgICBsYWJlbHM6CiAgICAgICAgbmFtZTog\ncmVib290CiAgICBzcGVjOgogICAgICBjb250YWluZXJzOgogICAgICAgIC0gbmFtZTogcmVib290\nCiAgICAgICAgICBpbWFnZTogY29uZm9ybWFuY2UvcmVib290X2RhZW1vbjpsYXRlc3QKICAgICAg\nICAgIGNvbW1hbmQ6IFsiL2VudHJ5cG9pbnQuc2giXQogICAgICAgICAgdm9sdW1lTW91bnRzOgog\nICAgICAgICAgLSBtb3VudFBhdGg6IC9zeXNycQogICAgICAgICAgICBuYW1lOiBzeXNycS12b2x1\nbWUKICAgICAgdm9sdW1lczoKICAgICAgLSAgbmFtZTogc3lzcnEtdm9sdW1lCiAgICAgICAgIGhv\nc3RQYXRoOgogICAgICAgICAgIHBhdGg6IC9wcm9jL3N5c3JxLXRyaWdnZXIK\n")
RESOURCE_CREATION_TIMEOUT = ENV.has_key?("CNF_TESTSUITE_RESOURCE_CREATION_TIMEOUT") ? ENV["CNF_TESTSUITE_RESOURCE_CREATION_TIMEOUT"].to_i : 120
ROLLING_VERSION_CHANGE_TEST_NAMES = ["rolling_update", "rolling_downgrade", "rolling_version_change"]
ROOT_URL = "https://api.github.com/repos"
SKIPPED = "skipped"
SLOG = Log.for("Setup")
SONOBUOY_K8S_VERSION = "0.56.14"
SONOBUOY_OS = "linux"
SPECIALIZED_INIT_SYSTEMS = ["tini", "dumb-init", "s6-svscan"]
STRACE_WAIT_BUFFER = 3.0
TESTSUITE_NAMESPACE = "cnf-testsuite"
UERANSIM_HELMCONFIG = Base64.decode_string("IyBJTVNJIG51bWJlciBvZiB0aGUgVUUuIElNU0kgPSBbTUNDfE1OQ3xNU0lTRE5dIChJbiB0b3Rh\nbCAxNSBvciAxNiBkaWdpdHMpCgpzdXBpOiAnaW1zaS17eyAuVmFsdWVzLm1jYyB9fXt7IC5WYWx1\nZXMubW5jIH19e3sgLlZhbHVlcy51ZXMuaW5pdGlhbE1TSVNETiB9fScKbWNjOiAne3sgLlZhbHVl\ncy5tY2MgfX0nCm1uYzogJ3t7IC5WYWx1ZXMubW5jIH19JwoKIyBTVUNJIFByb3RlY3Rpb24gQ29u\nZmlnCnt7IGlmIC5WYWx1ZXMucHJvdGVjdGlvblNjaGVtZSB9fQpwcm90ZWN0aW9uU2NoZW1lOiAn\ne3sgLlZhbHVlcy5wcm90ZWN0aW9uU2NoZW1lIH19Jwp7eyBlbmQgfX0Ke3sgaWYgLlZhbHVlcy5w\ndWJsaWNLZXkgfX0KaG9tZU5ldHdvcmtQdWJsaWNLZXk6ICd7eyAuVmFsdWVzLnB1YmxpY0tleSAg\nfX0nCnt7IGVuZCB9fQp7eyBpZiAuVmFsdWVzLnB1YmxpY0tleUlkIH19CmhvbWVOZXR3b3JrUHVi\nbGljS2V5SWQ6ICd7eyAuVmFsdWVzLnB1YmxpY0tleUlkIH19Jwp7eyBlbmQgfX0Ke3sgaWYgLlZh\nbHVlcy5yb3V0aW5nSW5kaWNhdG9yIH19CnJvdXRpbmdJbmRpY2F0b3I6ICd7eyAuVmFsdWVzLnJv\ndXRpbmdJbmRpY2F0b3IgfX0nCnt7IGVuZCB9fQoKCiMgUGVybWFuZW50IHN1YnNjcmlwdGlvbiBr\nZXkKa2V5OiAne3sgLlZhbHVlcy51ZXMua2V5IH19JwojIE9wZXJhdG9yIGNvZGUgKE9QIG9yIE9Q\nQykgb2YgdGhlIFVFCm9wOiAne3sgLlZhbHVlcy51ZXMub3AgfX0nCiMgVGhpcyB2YWx1ZSBzcGVj\naWZpZXMgdGhlIE9QIHR5cGUgYW5kIGl0IGNhbiBiZSBlaXRoZXIgJ09QJyBvciAnT1BDJwpvcFR5\ncGU6ICd7eyAuVmFsdWVzLnVlcy5vcFR5cGUgfX0nCiMgQXV0aGVudGljYXRpb24gTWFuYWdlbWVu\ndCBGaWVsZCAoQU1GKSB2YWx1ZQphbWY6ICc4MDAwJwojIElNRUkgbnVtYmVyIG9mIHRoZSBkZXZp\nY2UuIEl0IGlzIHVzZWQgaWYgbm8gU1VQSSBpcyBwcm92aWRlZAppbWVpOiAnMzU2OTM4MDM1NjQz\nODAzJwojIElNRUlTViBudW1iZXIgb2YgdGhlIGRldmljZS4gSXQgaXMgdXNlZCBpZiBubyBTVVBJ\nIGFuZCBJTUVJIGlzIHByb3ZpZGVkCmltZWlTdjogJzQzNzA4MTYxMjU4MTYxNTEnCgojIExpc3Qg\nb2YgZ05CIElQIGFkZHJlc3NlcyBmb3IgUmFkaW8gTGluayBTaW11bGF0aW9uCmduYlNlYXJjaExp\nc3Q6CiAgLSAke0dOQl9JUH0KCiAgIyBVQUMgQWNjZXNzIElkZW50aXRpZXMgQ29uZmlndXJhdGlv\nbgp1YWNBaWM6CiAgbXBzOiBmYWxzZQogIG1jczogZmFsc2UKCiMgVUFDIEFjY2VzcyBDb250cm9s\nIENsYXNzCnVhY0FjYzoKICBub3JtYWxDbGFzczogMAogIGNsYXNzMTE6IGZhbHNlCiAgY2xhc3Mx\nMjogZmFsc2UKICBjbGFzczEzOiBmYWxzZQogIGNsYXNzMTQ6IGZhbHNlCiAgY2xhc3MxNTogZmFs\nc2UKICAKIyBJbml0aWFsIFBEVSBzZXNzaW9ucyB0byBiZSBlc3RhYmxpc2hlZApzZXNzaW9uczoK\nICB7ey0gcmFuZ2UgLlZhbHVlcy51ZXMuYXBuTGlzdCB9fQogIC0ge3stIHRvWWFtbCAuIHwgbmlu\nZGVudCA0IH19CiAge3stIGVuZCB9fQoKIyBDb25maWd1cmVkIE5TU0FJIGZvciB0aGlzIFVFIGJ5\nIEhQTE1OCmNvbmZpZ3VyZWQtbnNzYWk6CiAgLSBzc3Q6IHt7IC5WYWx1ZXMuc3N0IH19CiAgICBz\nZDoge3sgLlZhbHVlcy5zZCB9fQoKIyBEZWZhdWx0IENvbmZpZ3VyZWQgTlNTQUkgZm9yIHRoaXMg\nVUUKZGVmYXVsdC1uc3NhaToKICAtIHNzdDoge3sgLlZhbHVlcy5zc3QgfX0KICAgIHNkOiB7eyAu\nVmFsdWVzLnNkIH19CgojIFN1cHBvcnRlZCBlbmNyeXB0aW9uIGFsZ29yaXRobXMgYnkgdGhpcyBV\nRQppbnRlZ3JpdHk6CiAgSUExOiB0cnVlCiAgSUEyOiB0cnVlCiAgSUEzOiB0cnVlCgojIFN1cHBv\ncnRlZCBpbnRlZ3JpdHkgYWxnb3JpdGhtcyBieSB0aGlzIFVFCmNpcGhlcmluZzoKICBFQTE6IHRy\ndWUKICBFQTI6IHRydWUKICBFQTM6IHRydWUKCiMgSW50ZWdyaXR5IHByb3RlY3Rpb24gbWF4aW11\nbSBkYXRhIHJhdGUgZm9yIHVzZXIgcGxhbmUKaW50ZWdyaXR5TWF4UmF0ZToKICB1cGxpbms6ICdm\ndWxsJwogIGRvd25saW5rOiAnZnVsbCcK\n")
WLOG = Log.for("Workload")

Define top level loggers for workload, platform and setup tasks. Modules and Classes should have their own loggers.

WORKLOAD_RESOURCE_KIND_NAMES = ["replicaset", "deployment", "statefulset", "pod", "daemonset"]

Method Summary

Method Detail

def acceptable_kubectl_version?(kubectl_response, verbose = false) #

Check if client version is not too many versions behind server version


[View source]
def attach_strace(pid : String, node : JSON::Any) #

Attach strace to a PID in background


[View source]
def binary_directory #

[View source]
def binary_path #

[View source]
def cert_stdout_score(tags, full_name, exclude_warning = false) #

[View source]
def change_capacity(base_replicas, target_replica_count, args, config, resource = {kind: "", metadata: {name: ""}}) #

[View source]
def check_alpha(args) #

if the alpha flag or wip flag is true, then alpha tests should be run


[View source]
def check_alpha #

if the alpha flag or wip flag is true, then alpha tests should be run


[View source]
def check_beta(args) #

if the beta flag or alpha flag is true, then beta tests should be run


[View source]
def check_beta #

if the beta flag or alpha flag is true, then beta tests should be run


[View source]
def check_cnf_config(args) #

[View source]
def check_containerd #

[View source]
def check_destructive(args) #

[View source]
def check_destructive #

[View source]
def check_feature_level(args) #

check feature level e.g. --beta

if no feature level then feature level = ga


[View source]
def check_poc(args) #

[View source]
def check_poc #

[View source]
def check_sigterm_in_strace_logs(pid : String) : Bool #

Checks if SIGTERM appears in the PID's strace log


[View source]
def check_wip(args) #

[View source]
def check_wip #

[View source]
def configmap_volume_mounted?(configmap_volume, container) #

[View source]
def container_env_configmap_refs(resource : NamedTuple(kind: String, name: String, namespace: String), configmaps : Array(JSON::Any), container : JSON::Any) : Nil | Array(MutableConfigMapsInEnvResult) #

[View source]
def docker_global_response(verbose = false) #

[View source]
def docker_local_response(verbose = false) #

[View source]
def docker_version_info(verbose = false) : DockerVersion #

[View source]
def ensure_kubeconfig! #

[View source]
def extract_f_flags(helm_values : String | Nil) : String | Nil #

[View source]
def find(directory : String, wildcard : String) #

[View source]
def get_excluded_tasks(args) #

[View source]
def git_global_response(verbose = false) #

[View source]
def git_installation(verbose = false) #

[View source]
def git_local_response(verbose = false) #

[View source]
def git_version(git_response, verbose = false) #

[View source]
def helm_arch #

[View source]
def helm_global_response(verbose = false) #

[View source]
def helm_installation(verbose = false) #

TODO (rafal-lal): move stdout_ to main cnti testsuite


[View source]
def helm_local_cleanup #

[View source]
def helm_local_install_dir #

[View source]
def helm_local_response(verbose = false) #

[View source]
def helm_v2_version(helm_response) #

[View source]
def helm_v3_version(helm_response) #

[View source]
def helm_version(helm_response, verbose = false) #

[View source]
def increase_decrease_remedy_msg #

[View source]
def install_local_helm #

[View source]
def interactively_create_config #

[View source]
def invoke_tasks_by_tag_list(parent_task, tags, exclude_tasks = [] of String) #

[View source]
def kubectl_global_response(verbose = false) #

[View source]
def kubectl_installation(verbose = false, offline_mode = false) #

TODO (rafal-lal): move stdout_ from here to main cnti


[View source]
def kubectl_local_response(verbose = false) #

[View source]
def kubectl_version(kubectl_response, version_for = "client", verbose = false) #

Extracts Kubernetes client version or server version

version = kubectl_version(kubectl_response, "client")
version # => "1.12"

version = kubectl_version(kubectl_response, "server")
version # => "1.12"

Returns the version as a string (Example: 1.12, 1.20, etc)


[View source]
def local_docker_path #

[View source]
def local_git_path #

[View source]
def local_helm_full_path #

[View source]
def local_helm_path #

[View source]
def local_kubectl_path #

[View source]
def mutable_configmaps_as_volumes(resource : NamedTuple(kind: String, name: String, namespace: String), configmaps : Array(JSON::Any), volumes : Array(JSON::Any), containers : Array(JSON::Any)) : Array(MutableConfigMapsVolumesResult) #

[View source]
def named_sha_list(resp_json) #

[View source]
def optional_key_as_string(totem_config, key_name) #

this method extracts a string value from a config section if it exists if the value is an integer it will be converted to a string before extraction


[View source]
def parse_docker_version(docker_response, verbose = false) #

[View source]
def prompt(message) #

[View source]
def read_version_file(filepath) #

[View source]
def repeat_with_timeout(timeout, errormsg, reset_on_nil = false, delay = 2, &) #

[View source]
def setup_calico_cluster(cluster_name : String) : KindManager::Cluster #

[View source]
def setup_cilium_cluster(cluster_name : String) : KindManager::Cluster #

[View source]
def smf_up_heartbeat_capture_matches_count(smf_key : String, smf_value : String, command : String) #

[View source]
def sonobuoy_details(cmd_path : String) #

[View source]
def stdout_colored(msg, color, same_line = false) #

\e[1A\e[K is a sequence that allows to clear current line and place cursor at its beginning


[View source]
def stdout_error(msg, same_line = false) #

[View source]
def stdout_failure(msg, same_line = false) #

[View source]
def stdout_info(msg, same_line = false) #

[View source]
def stdout_score(test_name : String, full_name) #

[View source]
def stdout_score(test_names : Array(String), full_name) #

[View source]
def stdout_score(test_name) #

[View source]
def stdout_success(msg, same_line = false) #

[View source]
def stdout_warning(msg, same_line = false) #

[View source]
def testsuite_resources_dir #

[View source]
def toggle(toggle_name) #

[View source]
def tools_path #

[View source]
def update_yml(yml_file, top_level_key, value) #

[View source]
def upsert_decorated_task(task, status : CNFManager::ResultStatus, message, start_time) #

[View source]
def upsert_dynamic_task(task, status : CNFManager::ResultStatus, message, start_time) #

[View source]
def upsert_error_task(task, message, start_time) #

[View source]
def upsert_failed_task(task, message, start_time) #

[View source]
def upsert_na_task(task, message, start_time) #

[View source]
def upsert_passed_task(task, message, start_time) #

[View source]
def upsert_skipped_task(task, message, start_time) #

[View source]
def version_less_than(v1str, v2str) #

compare 2 SemVer strings and return true if v1 is less than v2


[View source]
def wait_for_scaling(resource, target_replica_count, args) #

[View source]
def with_kubeconfig(kube_config : String, &) #

[View source]