#2 Add CI tests using the standard test interface
Merged 2 years ago by jchaloup. Opened 2 years ago by esakaiev.
git://fedorapeople.org/~esakaiev/etcd new_tests1  into  master

Removed https_proxy: squid.redhat.com:3128
esaka • 2 years ago  
Adding tests for etcd package for fedorapeople in new_tests1 branch
root • 2 years ago  
tests/e2e_test_from_src_include.yml
file added
+39

@@ -0,0 +1,39 @@

+ - hosts: localhost

+   tags:

+     - classic

+   tasks:

+     - include_tasks: tasks/update_os_vars.yml

+     - include_tasks: tasks/install_etcd_src.yml

+     - include_tasks: tasks/prepare_e2e.yml

+     - name: Run e2e test

+       shell: go test -timeout 10m -v ./e2e &> /var/tmp/test.log

+       args:

+         chdir: "{{ src_dir }}"

+       ignore_errors: true

+       environment:

+         GOPATH: "{{ src_dir }}/gopath:{{ go_path }}"

+         EXPECT_DEBUG: true

+     - always:

+       - name: Pull out the logs

+         fetch:

+           dest: "{{ artifacts }}/"

+           src: "/var/tmp/test.log"

+           flat: yes

+       - include_role:

+           name: remove_req_dir

+         vars:

+           path: "{{ item.path }}"

+           patterns: "{{ item.patterns }}"

+           file_type: directory

+         with_items:

+                 - { path: "{{src_dir}}", patterns: ""}

+                 - { path: "/var/tmp/cafile", patterns: ""}

+                 - { path: "/tmp", patterns: "test*"}

+       - name: Check the results

+         shell: grep "^\-\-\- FAIL" "{{ artifacts}}"/test.log | awk '{print $3}'

+         register: failed_cases

+         ignore_errors: true

+       - name: Store failed cases

+         local_action: copy content={{ failed_cases.stdout }} dest={{ artifacts }}/failed_cases.log

+         when: failed_cases.stdout != ""

+         failed_when: failed_cases.stdout

tests/files/get_golang_pkgs.py
file added
+53

@@ -0,0 +1,53 @@

+ #!/usr/bin/python

+ import logging

+ import re

+ import yum

+ from optparse import OptionParser

+ 

+ 

+ def get_pkg_name(req_line, rpm_list):

+     kws = re.split("[() /]", req_line.strip())[2:5]

+     kws.reverse()

+     compare_str = "devel"

+     tmp_list = rpm_list

+     for kw in kws:

+         tmp_list = [_ for _ in tmp_list if re.findall("%s" % compare_str, _)]

+         if len(tmp_list) > 1:

+             compare_str = "%s-%s" % (kw, compare_str)

+         else:

+             break

+ 

+     if not tmp_list:

+         if kws[-1] == "github.com":

+             compare_str = "github-.*-%s-devel" % kws[0]

+             tmp_list = [_ for _ in rpm_list if re.findall("%s" % compare_str, _)]

+         if kws[-1] == "golang.org":

+             compare_str = "golangorg-%s-devel" % kws[0]

+             tmp_list = [_ for _ in rpm_list if re.findall("%s" % compare_str, _)]

+         if kws[-1] == "google.golang.org":

+             compare_str = "-%s-.*-devel" % kws[1]

+             tmp_list = [_ for _ in rpm_list if re.findall("%s" % compare_str, _)]

+ 

+ 

+     return tmp_list

+ 

+ 

+ if __name__ == '__main__':

+     parser = OptionParser()

+     parser.add_option("-f", "--spec_file", dest="sfile",

+                        default="")

+     

+     (options, args) = parser.parse_args()

+     sfile = options.sfile

+ 

+     yb = yum.YumBase()

+     yum_list = yb.doPackageLists()

+     alist = sorted(yum_list.available)

+     source_rpms = [_.name for _ in alist if re.match("golang", _.name)]

+ 

+     install_pkgs = []

+     with open(sfile) as f:

+         for line in f:

+             install_pkgs += get_pkg_name(line, source_rpms)

+     for pkg in set(install_pkgs):

+         print pkg

tests/group_vars/all.yml
file added
+8

@@ -0,0 +1,8 @@

+ artifacts: ./artifacts

+ rpm_base_url: https://kojipkgs.fedoraproject.org/packages

+ go_path: /root/golang

+ debug: false

+ req_packages: ['git', 'golang', 'rpm-build', 'yum', 'libselinux-python']

+ fedora_req_packages: ['go-compilers-golang-compiler']

+ is_fedora: false

+ is_rhel: false

tests/roles/create_ca_files_with_cfssl/tasks/main.yml
file added
+30

@@ -0,0 +1,30 @@

+ ---

+ 

+ - name: Create cafile directory

+   file:

+     path: "/var/tmp/cafile"

+     state: directory

+ - name: Get cfssl from github

+   shell: go get -u github.com/cloudflare/cfssl/cmd/...

+ - name:

+   template:

+     src: "{{ item }}.j2"

+     dest: "/var/tmp/cafile/{{ item }}"

+   with_items:

+     - ca-csr.json

+     - ca-config.json

+     - req-csr.json

+ - name: Generate CA certificate 

+   shell: cfssl genkey -initca ca-csr.json | cfssljson -bare ca

+   args:

+     chdir: /var/tmp/cafile

+ - name: Generate certificate and private key with CA

+   shell: cfssl gencert -ca ca.pem -ca-key ca-key.pem -config ca-config.json req-csr.json | cfssljson -bare {{ item }}

+   args:

+     chdir: /var/tmp/cafile

+   with_items:

+     - "{{ cert_names }}"

+ - name: Copy needed certificates and private keys to destination

+   shell: cp -f /var/tmp/cafile/{{ item.src }} {{ src_dir }}/integration/fixtures/{{ item.dst }}

+   with_items:

+     - "{{ cert_srcs_dsts }}"

tests/roles/install_go_repo_from_github/tasks/main.yml
file added
+65

@@ -0,0 +1,65 @@

+ ---

+ 

+ - name: Create bin

+   file:

+     path: "{{ bin_dir }}"

+     state: directory

+ 

+ - name: Create src code directory

+   file:

+     path: "{{ repo_path }}/{{ repo_name }}"

+     state: directory

+ 

+ - name: Clone repo to /var/tmp

+   shell: git clone "{{ git_repo }}"

+   args:

+     chdir: "{{ repo_path }}"

+ - name: Determine if use make 

+   shell: ls "{{ repo_path }}/{{ repo_name }}" | grep -i makefile

+   ignore_errors: true

+   register: output

+ 

+ - name: Set compile with make

+   set_fact:

+     compile_method: make

+   when: output.rc == 0

+ 

+ - name: Determine if use build

+   shell: ls "{{ repo_path }}/{{ repo_name }}" | grep -i build

+   ignore_errors: true

+   register: output

+ - name: Set compile with build

+   set_fact:

+     compile_method: build

+   when: output.rc == 0

+ 

+ - name: Build with make

+   shell: make

+   args:

+     chdir: "{{ repo_path }}/{{ repo_name }}"

+   when: "compile_method == 'make'"

+ - name: Build with ./build

+   shell: ./build

+   args:

+     chdir: "{{ repo_path }}/{{ repo_name }}"

+   when: "compile_method == 'build'"

+ - name: Determine if bin dir is generated

+   shell: ls "{{ repo_path }}/{{ repo_name }}"/bin

+   ignore_errors: true

+   register: output

+ - name: Set compiled binary dir

+   set_fact:

+     c_bin_dir: "{{ repo_path }}/{{ repo_name }}/bin"

+   when: output.rc == 0

+ - name: Set compiled binary dir

+   set_fact:

+     c_bin_dir: "{{ repo_path }}/{{ repo_name }}"

+   when: output.rc != 0

+ - name: Copy generated binary to customer bin dir

+   shell: cp {{ c_bin_dir }}/{{ item }} {{ bin_dir }}

+   with_items:

+     "{{ compiled_binary }}"

+ - name: Clean up source directory

+   file:

+     path: "{{ repo_path }}/{{ repo_name }}"

+     state: absent

tests/roles/install_golang_dep_from_spec/tasks/main.yml
file added
+13

@@ -0,0 +1,13 @@

+ ---

+ 

+ - name: Get depended golang lines from spec

+   shell: "{% raw %} grep '^BuildRequires: golang' {% endraw %} /root/rpmbuild/SPECS/{{ package_name }}.spec | sort |uniq > /var/tmp/br"

+ - name: Turned the spec lines into packages

+   shell: python "{{ role_path }}"/../../files/get_golang_pkgs.py -f /var/tmp/br

+   register: reqs

+ - name: Install the packages required

+   package:

+     name: "{{ item }}"

+     state: present

+   with_items:

+     - "{{ reqs.stdout_lines }}"

tests/roles/install_src_rpm/tasks/main.yml
file added
+29

@@ -0,0 +1,29 @@

+ ---

+ 

+ - name: Get installed rpm information

+   yum:

+     list: "{{ package_name }}"

+   register: etcd_info_output

+ - name: Set up src url

+   set_fact:

+     etcd_src_url: "{{ rpm_base_url }}/etcd/{{ item['version'] }}/{{ item['release'] }}/src/etcd-{{ item['version'] }}-{{ item['release'] }}.src.rpm"

+     package_path: "/var/tmp/{{ package_name }}.src.rpm"

Why /var/tmp/...? Why not just /tmp/... ?

+   when: item ['yumstate'] == 'installed'

+   with_items:

+     - "{{ etcd_info_output.results }}"

+ - name: Remove the exist target file

+   file:

+     path: "{{ package_path }}"

+     state: absent

+ - name: Download src package

+   get_url:

+     url: "{{ etcd_src_url }}"

+     dest: "{{ package_path }}"

+ - name: Install src package with rpm

+   shell: rpm -ivh {{ package_path }}

+ - name: Get commit from SPEC file

+   shell: awk '/^%global\scommit/{print $3}' /root/rpmbuild/SPECS/{{ package_name }}.spec

+   register: commit

+ - name: Set src directory

+   set_fact:

+     src_dir: /root/rpmbuild/BUILD/{{ package_name }}-{{ commit.stdout}}

tests/roles/remove_req_dir/tasks/main.yml
file added
+23

@@ -0,0 +1,23 @@

+ ---

+ 

+ - name: Get files or directories fit for the patterns

+   find:

+     paths: "{{ path }}"

+     patterns: "{{ patterns }}"

+     file_type: "{{ file_type| default('file')}}"

+   register: remove_paths

+   when: (patterns is defined) and (patterns != "")

+ - name: Remove the files or directories

+   file:

+     path: "{{ item_path.path }}"

+     state: absent

+   with_items:

+     - "{{ remove_paths.files }}"

+   loop_control:

+     loop_var: item_path

+   when: (patterns is defined) and (patterns != "")

+ - name: Remove target files or diredctories

+   file:

+     path: "{{ path }}"

+     state: absent

+   when: (patterns is undefined) or (patterns == "")

tests/tasks/install_etcd_src.yml
file added
+19

@@ -0,0 +1,19 @@

+ ---

+ 

+ - name: Install request packages

+   package:

+     name: "{{ item }}"

+     state: latest

+   with_items:

+     - "{{ req_packages }}"

+ - include_role:

+     name: install_src_rpm

+   vars:

+     package_name: etcd

+ - include_role:

+     name: install_golang_dep_from_spec

+   vars:

+     package_name: etcd

+   when: is_fedora

+ - name: Install etcd source code

+   shell: rpmbuild -bp /root/rpmbuild/SPECS/etcd.spec

tests/tasks/prepare_e2e.yml
file added
+58

@@ -0,0 +1,58 @@

+ ---

+ 

+ - name: Check Ca files

+   shell: openssl verify -CAfile ca.crt server.crt

+   args:

+     chdir: "{{ src_dir}}/integration/fixtures"

+   ignore_errors: true

+   register: ca_ok

+ - name: Replace ca files

+   environment:

+     GOPATH: "{{ go_path }}"

+     PATH: "{{ ansible_env.PATH }}:{{ go_path }}/bin"

+   include_role:

+     name: create_ca_files_with_cfssl

+   vars:

+     cert_names: server

+     cert_srcs_dsts: [{ src: "ca.pem", dst: "ca.crt" }, { src: "server.pem", dst: "server.crt" }, { src: "server-key.pem", dst: "server.key.insecure" }]

+   when: ca_ok.rc != 0

+ - name: Check if Godeps exist under src

+   find:

+     paths: "{{ src_dir }}"

+     patterns: Godeps

+     file_type: directory

+   register: godeps

+ - name: Install glide

+   include_role:

+     name: install_go_repo_from_github

+   vars:

+     bin_dir: "{{ go_path }}/bin"

+     git_repo: https://github.com/Masterminds/glide.git

+     repo_path: "{{go_path}}/src/github.com/Masterminds"

+     repo_name: glide

+     compiled_binary: ['glide']

+   environment:

+     GOPATH: "{{ go_path }}"

+   when: godeps.matched == 0

+ - name: Set up golang path

+   environment:

+     GOPATH: "{{ go_path }}"

+     PATH: "{{ ansible_env.PATH }}:{{ go_path }}/bin"

+   block:

+     - shell: mkdir gopath; ln -s {{ src_dir }}/Godeps/_workspace/src gopath/src; rm gopath/src/github.com/coreos/etcd; ln -s {{ src_dir }} gopath/src/github.com/coreos/etcd

+       args:

+         chdir: "{{ src_dir }}"

+       when: godeps.matched != 0

+     - shell: mkdir gopath; cp -r  vendor/* cmd/vendor/; ln -s {{ src_dir }}/cmd/vendor {{ src_dir }}/gopath/src; ln -s  {{ src_dir }} gopath/src/github.com/coreos/etcd

+       args:

+         chdir: "{{ src_dir }}"

+       when: godeps.matched == 0

+ - name: Create bin under etcd src

+   file:

+     path: "{{ src_dir }}/bin"

+     state: directory

+ - name: Copy exec file to src directory

+   shell: cp -f `which {{ item }}` {{ src_dir }}/bin/{{ item }}

+   with_items:

+     - etcd

+     - etcdctl

tests/tasks/update_os_vars.yml
file added
+21

@@ -0,0 +1,21 @@

+ ---

+ 

+ - name: Get distro name from /etc/os-release

+   raw: "grep '^NAME=' /etc/os-release | sed s'/NAME=//'"

+   register: distro

+ - name: Set the is_fedora fact

+   set_fact:

+     is_fedora: true

+   when: "'Fedora' in distro.stdout"

+ - name: Set the is_rhel fact

+   set_fact:

+     is_rhel: true

+   when: "'Red Hat Enterprise Linux' in distro.stdout"

+ - name: Update request packages for Fedora

+   set_fact:

+     req_packages: "{{ req_packages }} + {{ fedora_req_packages }}"

+   when: is_fedora and fedora_req_packages is defined

+ - name: Update request packages for RHEL

+   set_fact:

+     req_packages: "{{ req_packages }} + {{ rhel_req_packages }}"

+   when: is_rhel and rhel_req_packages is defined

tests/templates/ca-config.json.j2
file added
+13

@@ -0,0 +1,13 @@

+ {

+   "signing": {

+     "default": {

+         "usages": [

+           "signing",

+           "key encipherment",

+           "server auth",

+           "client auth"

+         ],

+         "expiry": "8760h"

+     }

+   }

+ }

tests/templates/ca-csr.json.j2
file added
+16

@@ -0,0 +1,16 @@

+ {

+   "CN": "Autogenerated CA",

+   "key": {

+     "algo": "ecdsa",

+     "size": 384

+   },

+   "names": [

+     {

+       "O": "Honest Achmed's Used Certificates",

+       "OU": "Hastily-Generated Values Divison",

+       "L": "San Francisco",

+       "ST": "California",

+       "C": "US"

+     }

+   ]

+ }

tests/templates/req-csr.json.j2
file added
+17

@@ -0,0 +1,17 @@

+ {

+   "CN": "etcd",

+   "hosts": [

+     "localhost"

+   ],

+   "key": {

+     "algo": "ecdsa",

+     "size": 384

+   },

+   "names": [

+     {

+       "O": "autogenerated",

+       "OU": "etcd cluster",

+       "L": "the internet"

+     }

+   ]

+ }

tests/tests.yml
file added
+3

@@ -0,0 +1,3 @@

+ ---

+ # Tests for classic environment

+ - include: e2e_test_from_src_include.yml

no initial comment

Justification

Adds tests according to the CI wiki specifically the standard test interface in the spec.

The playbook includes Tier1 level test cases that have been tested in the following contexts and is passing reliably: Classic. Test logs are stored in the artifacts directory.

The following steps are used to execute the tests using the standard test interface:

Current package includes 1 opened issue on upstreamfirst: https://upstreamfirst.fedorainfracloud.org/shadow-utils/issue/2

Test environment

Make sure you have installed packages from the spec

    # rpm -q ansible python2-dnf libselinux-python standard-test-roles \
    ansible-2.3.2.0-1.fc26.noarch \
    python2-dnf-2.6.3-11.fc26.noarch \
    libselinux-python-2.6-7.fc26.x86_64 \
    standard-test-roles-2.4-1.fc26.noarch

Run tests for Classic

    # export ANSIBLE_INVENTORY=$(test -e inventory && echo inventory || echo /usr/share/ansible/inventory)
        # curl -o etcd.rpm https://kojipkgs.fedoraproject.org/packages/etcd/3.2.7/1.fc27/x86_64/etcd-3.2.7-1.fc27.x86_64.rpm
    # export TEST_SUBJECTS=$PWD/etcd.rpm
        # ansible-playbook --tags=classic tests.yml -v

Snip of the example test run for Classic tests:

TASK [Check the results] ******************************************************************************************************************************************************************************************
changed: [rpms] => {"changed": true, "cmd": "grep \"^\\-\\-\\- FAIL\" \"./artifacts\"/test.log | awk '{print $3}'", "delta": "0:00:00.004990", "end": "2017-11-01 13:05:56.991155", "failed": false, "rc": 0, "start": "2017-11-01 13:05:56.986165", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}

PLAY RECAP ********************************************************************************************************************************************************************************************************
rpms                       : ok=31   changed=18   unreachable=0    failed=0   


--- PASS: TestCtlV2Set (0.85s)
--- PASS: TestCtlV2SetQuorum (0.28s)
--- PASS: TestCtlV2SetClientTLS (0.73s)
--- PASS: TestCtlV2SetPeerTLS (0.95s)
--- PASS: TestCtlV2SetTLS (0.55s)
--- PASS: TestCtlV2Mk (0.46s)
--- PASS: TestCtlV2MkQuorum (0.37s)
--- PASS: TestCtlV2MkTLS (0.49s)
--- PASS: TestCtlV2Rm (0.59s)
--- PASS: TestCtlV2RmTLS (0.99s)
--- PASS: TestCtlV2Ls (0.35s)
--- PASS: TestCtlV2LsQuorum (0.16s)
--- PASS: TestCtlV2LsTLS (0.22s)
--- PASS: TestCtlV2Watch (2.46s)
--- PASS: TestCtlV2WatchTLS (0.60s)
--- PASS: TestCtlV2WatchWithProxy (1.08s)
--- PASS: TestCtlV2WatchWithProxyNoSync (1.07s)
--- PASS: TestCtlV2GetRoleUser (0.91s)
--- PASS: TestCtlV2GetRoleUserWithProxy (1.23s)
--- PASS: TestCtlV2UserListUsername (1.14s)
--- PASS: TestCtlV2UserListRoot (1.13s)
--- PASS: TestCtlV2RoleList (1.06s)
--- PASS: TestCtlV2Backup (1.81s)
--- PASS: TestCtlV2AuthWithCommonName (1.05s)
--- PASS: TestCtlV2ClusterHealth (1.67s)
--- PASS: TestCtlV3Alarm (0.85s)
--- PASS: TestCtlV3AuthEnable (0.69s)
--- PASS: TestCtlV3AuthDisable (1.35s)
--- PASS: TestCtlV3AuthWriteKey (2.39s)
--- PASS: TestCtlV3AuthRoleUpdate (2.18s)
--- PASS: TestCtlV3AuthUserDeleteDuringOps (1.41s)
--- PASS: TestCtlV3AuthRoleRevokeDuringOps (2.04s)
--- PASS: TestCtlV3AuthTxn (2.48s)
--- PASS: TestCtlV3AuthPerfixPerm (2.63s)
--- PASS: TestCtlV3AuthMemberAdd (1.87s)
--- PASS: TestCtlV3AuthMemberRemove (3.80s)
--- PASS: TestCtlV3AuthMemberUpdate (1.55s)
--- PASS: TestCtlV3AuthCertCN (1.40s)
--- PASS: TestCtlV3AuthRevokeWithDelete (2.20s)
--- PASS: TestCtlV3AuthInvalidMgmt (0.62s)
--- PASS: TestCtlV3AuthFromKeyPerm (4.55s)
--- PASS: TestCtlV3AuthAndWatch (2.06s)
--- PASS: TestCtlV3Compact (1.18s)
--- PASS: TestCtlV3CompactPhysical (0.27s)
--- PASS: TestCtlV3Defrag (1.15s)
--- PASS: TestCtlV3DefragWithAuth (1.39s)
--- PASS: TestCtlV3Elect (5.79s)
--- PASS: TestCtlV3EndpointHealth (2.78s)
--- PASS: TestCtlV3EndpointStatus (1.72s)
--- PASS: TestCtlV3EndpointHealthWithAuth (3.96s)
--- PASS: TestCtlV3Put (0.60s)
--- PASS: TestCtlV3PutNoTLS (0.65s)
--- PASS: TestCtlV3PutClientTLS (0.23s)
--- PASS: TestCtlV3PutClientAutoTLS (0.48s)
--- PASS: TestCtlV3PutPeerTLS (0.36s)
--- PASS: TestCtlV3PutTimeout (0.40s)
--- PASS: TestCtlV3PutClientTLSFlagByEnv (0.25s)
--- PASS: TestCtlV3PutIgnoreValue (0.62s)
--- PASS: TestCtlV3PutIgnoreLease (1.05s)
--- PASS: TestCtlV3Get (0.73s)
--- PASS: TestCtlV3GetNoTLS (1.10s)
--- PASS: TestCtlV3GetClientTLS (0.92s)
--- PASS: TestCtlV3GetClientAutoTLS (1.90s)
--- PASS: TestCtlV3GetPeerTLS (0.51s)
--- PASS: TestCtlV3GetTimeout (0.74s)
--- PASS: TestCtlV3GetQuorum (2.92s)
../bin/etcdctl-15120: abc *123 --- PASS: TestCtlV3GetFormat (1.03s)
--- PASS: TestCtlV3GetRev (0.86s)
--- PASS: TestCtlV3GetKeysOnly (0.20s)
--- PASS: TestCtlV3Del (0.63s)
--- PASS: TestCtlV3DelNoTLS (0.67s)
--- PASS: TestCtlV3DelClientTLS (1.69s)
--- PASS: TestCtlV3DelPeerTLS (1.17s)
--- PASS: TestCtlV3DelTimeout (0.85s)
--- PASS: TestCtlV3LeaseGrantTimeToLive (0.49s)
--- PASS: TestCtlV3LeaseKeepAlive (0.52s)
--- PASS: TestCtlV3LeaseRevoke (0.52s)
--- PASS: TestCtlV3Lock (6.05s)
--- PASS: TestCtlV3MakeMirror (1.14s)
--- PASS: TestCtlV3MakeMirrorModifyDestPrefix (1.14s)
--- PASS: TestCtlV3MakeMirrorNoDestPrefix (0.83s)
--- PASS: TestCtlV3MemberList (0.28s)
--- PASS: TestCtlV3MemberRemove (2.77s)
--- PASS: TestCtlV3MemberAdd (0.69s)
--- PASS: TestCtlV3MemberUpdate (0.79s)
--- PASS: TestCtlV3Migrate (0.94s)
--- PASS: TestCtlV3RoleAdd (0.19s)
--- PASS: TestCtlV3RoleAddNoTLS (0.65s)
--- PASS: TestCtlV3RoleAddClientTLS (0.22s)
--- PASS: TestCtlV3RoleAddPeerTLS (1.05s)
--- PASS: TestCtlV3RoleAddTimeout (0.69s)
--- PASS: TestCtlV3RoleGrant (0.92s)
--- PASS: TestCtlV3Snapshot (0.86s)
--- PASS: TestCtlV3SnapshotCorrupt (0.59s)
--- PASS: TestIssue6361 (2.08s)
--- PASS: TestCtlV3SnapshotWithAuth (1.11s)
--- PASS: TestCtlV3Version (0.68s)
--- PASS: TestCtlV3DialWithHTTPScheme (0.57s)
--- PASS: TestCtlV3TxnInteractiveSuccess (0.63s)
--- PASS: TestCtlV3TxnInteractiveSuccessNoTLS (0.99s)
--- PASS: TestCtlV3TxnInteractiveSuccessClientTLS (1.28s)
--- PASS: TestCtlV3TxnInteractiveSuccessPeerTLS (0.69s)
--- PASS: TestCtlV3TxnInteractiveFail (0.70s)
--- PASS: TestCtlV3UserAdd (1.17s)
--- PASS: TestCtlV3UserAddNoTLS (1.23s)
--- PASS: TestCtlV3UserAddClientTLS (1.18s)
--- PASS: TestCtlV3UserAddPeerTLS (0.52s)
--- PASS: TestCtlV3UserAddTimeout (0.72s)
--- PASS: TestCtlV3UserDelete (1.08s)
--- PASS: TestCtlV3UserPasswd (1.26s)
--- PASS: TestCtlV3Watch (0.78s)
--- PASS: TestCtlV3WatchNoTLS (1.33s)
--- PASS: TestCtlV3WatchClientTLS (1.47s)
--- PASS: TestCtlV3WatchPeerTLS (0.73s)
--- PASS: TestCtlV3WatchTimeout (0.77s)
--- PASS: TestCtlV3WatchInteractive (0.77s)
--- PASS: TestCtlV3WatchInteractiveNoTLS (1.33s)
--- PASS: TestCtlV3WatchInteractiveClientTLS (1.04s)
--- PASS: TestCtlV3WatchInteractivePeerTLS (1.03s)
--- PASS: TestEtcdExampleConfig (0.72s)
--- PASS: TestEtcdMultiPeer (0.35s)
--- PASS: TestGateway (0.17s)
--- PASS: TestV2CurlNoTLS (0.64s)
--- PASS: TestV2CurlAutoTLS (0.48s)
--- PASS: TestV2CurlAllTLS (1.12s)
--- PASS: TestV2CurlPeerTLS (0.34s)
--- PASS: TestV2CurlClientTLS (1.21s)
--- PASS: TestV2CurlProxyNoTLS (1.05s)
--- PASS: TestV2CurlProxyTLS (1.28s)
--- PASS: TestV2CurlProxyPeerTLS (1.12s)
--- PASS: TestV2CurlClientBoth (0.45s)
--- PASS: TestV2CurlIssue5182 (0.95s)
--- PASS: TestV3CurlPutGetNoTLS (2.10s)
--- PASS: TestV3CurlPutGetAutoTLS (4.04s)
--- PASS: TestV3CurlPutGetAllTLS (2.68s)
--- PASS: TestV3CurlPutGetPeerTLS (0.72s)
--- PASS: TestV3CurlPutGetClientTLS (0.47s)
--- PASS: TestV3CurlWatch (4.09s)
--- PASS: TestV3CurlTxn (2.10s)
PASS

Hi @esakaiev
bgoncalv find out another line that should be removed from the file. He report an issue here: https://upstreamfirst.fedorainfracloud.org/etcd/issue/4

And I already update my code to remove it. This is also will not influence the test results. Can you help to update it again?

Thanks a lot.

Hi @ypu ,

Thank you for the notification, I will update it.

Regards,
Eduard

1 new commit added

  • Removed https_proxy: squid.redhat.com:3128
2 years ago

Hi @ypu, I have updated pull-request.

Regards,
Eduard

Why /var/tmp/...? Why not just /tmp/... ?

Hi, @jchaloup. If it critical, I can change it.

Regards,
Eduard

What happens if the tests fail? Will it block the rpm from pushing to the stable repository?

As long as the tests are run in a vanilla environment, I am +1 for merging the PR. I usually mix RHEL and Fedora etcd rpms on my machine. So when running the tests with RHEL rpm, it fails as it can not find it's corresponding srpm (URL is incorrect).

Some nits:
- I don't think you should golang dependencies based on the srpm. You should use the unit-test-devel rpm instead. That's why the rpm exists.
- Whenever possible I would move all the relevant tasks (e.g. as certificates handling) under the unit-test-devel rpm. The original idea was/is to ship all the specific test pieces in the rpm and have the testing framework (whatever it is) as generic as possible
- I see you install the glide from the github. We already have that packaged in Fedora.

None of the nit are blocking. More like consideration for future improvements of the test suite.

No matter what, this is a fine piece of the testing infra. Thanks for that, Eduard!!!

Commit 4ed27ff fixes this pull-request

Pull-Request has been merged by jchaloup

2 years ago

Pull-Request has been merged by jchaloup

2 years ago

What happens if the tests fail? Will it block the rpm from pushing to the stable repository?

I can provide a link, as answer on your question: https://github.com/CentOS-PaaS-SIG/ci-pipeline/blob/master/ci-pipeline-complete-view.png.

Regards,
Eduard

Hi Jan,

Thanks for your comments and some of them are designed like that, but we can improve it later. Will keep eyes in this test and try to improve it in the future.

As long as the tests are run in a vanilla environment, I am +1 for merging the PR. I usually mix RHEL and Fedora etcd rpms on my machine. So when running the tests with RHEL rpm, it fails as it can not find it's corresponding srpm (URL is incorrect).

The URL is configurable in the cfg file in group_vars/all.yml . It should be update based on the test env. I use fedora link here as this is for fedora project. I test it with RHEL package and it also works.

Some nits:
- I don't think you should golang dependencies based on the srpm. You should use the unit-test-devel rpm instead. That's why the rpm exists.

The unit-test-devel package sometimes miss some libs and will cause the test failed according my test results. So I decide to use the srpm only. Also keep the code to install dependencies with glide so we can switch quickly when the golang dependencies have problems in srpm too.

  • Whenever possible I would move all the relevant tasks (e.g. as certificates handling) under the unit-test-devel rpm. The original idea was/is to ship all the specific test pieces in the rpm and have the testing framework (whatever it is) as generic as possible
  • I see you install the glide from the github. We already have that packaged in Fedora.

As it's target is both fedora and rhel, maybe it is ok to keep it install from github.

None of the nit are blocking. More like consideration for future improvements of the test suite.
No matter what, this is a fine piece of the testing infra. Thanks for that, Eduard!!!