diff --git a/data/ansible/integration_tests/go.yaml b/data/ansible/integration_tests/go.yaml new file mode 100644 index 000000000..d7531502e --- /dev/null +++ b/data/ansible/integration_tests/go.yaml @@ -0,0 +1,81 @@ +--- +- name: create gopath directory + file: + state: directory + mode: 'u=rwx,go=rx' + dest: '{{ golang_gopath }}' + +- name: create download directory + file: + state: directory + mode: 'u=rwx,go=rx' + dest: '{{ golang_download_dir }}' + +- name: download Go language SDK + get_url: + url: '{{ golang_mirror }}/{{ golang_redis_filename }}' + dest: '{{ golang_download_dir }}/{{ golang_redis_filename }}' + mode: 'u=rw,go=r' + +- name: create Go language SDK installation directory + become: yes + file: + state: directory + owner: root + group: root + mode: 'u=rwx,go=rx' + dest: '{{ golang_install_dir }}' + +- name: install Go language SDK + become: yes + unarchive: + src: '{{ golang_download_dir }}/{{ golang_redis_filename }}' + remote_src: yes + extra_opts: '--strip-components=1' + dest: '{{ golang_install_dir }}' + owner: root + group: root + creates: '{{ golang_install_dir }}/bin' + +# Set Go language SDK environment variables +- name: make sure /etc/profile.d exists + become: yes + file: + path: /etc/profile.d + state: directory + owner: root + group: root + mode: 'u=rwx,go=rx' + +- name: export Go language SDK environment variables + become: yes + template: + src: golang.sh.j2 + dest: /etc/profile.d/golang.sh + owner: root + group: root + mode: 'u=rw,go=r' + +- name: Export GOROOT + lineinfile: + path: ~/.bashrc + line: export GOROOT='{{ golang_install_dir }}' + insertafter: last + +- name: Add GOROOT to PATH + lineinfile: + path: ~/.bashrc + line: export PATH=$PATH:$GOROOT/bin + insertafter: last + +- name: Export GOPATH + lineinfile: + path: ~/.bashrc + line: export GOPATH='{{ golang_gopath }}' + insertafter: last + +- name: Add GOPATH to PATH + lineinfile: + path: ~/.bashrc + line: export PATH=$PATH:$GOPATH/bin + insertafter: last \ No newline at end of file diff --git a/data/ansible/integration_tests/golang.sh.j2 b/data/ansible/integration_tests/golang.sh.j2 new file mode 100644 index 000000000..7bfc41c2e --- /dev/null +++ b/data/ansible/integration_tests/golang.sh.j2 @@ -0,0 +1,12 @@ + +#!/bin/sh + +{{ ansible_managed | comment('plain') }} + +export GOROOT='{{ golang_install_dir }}' +export PATH=$PATH:$GOROOT/bin + +{% if golang_gopath not in (None, '') %} +export GOPATH="{{ golang_gopath }}" +export PATH=$PATH:$GOPATH/bin +{% endif %} \ No newline at end of file diff --git a/data/ansible/integration_tests/kafka.service.j2 b/data/ansible/integration_tests/kafka.service.j2 new file mode 100644 index 000000000..9c435ba34 --- /dev/null +++ b/data/ansible/integration_tests/kafka.service.j2 @@ -0,0 +1,13 @@ +[Unit] +Requires=zookeeper.service +After=zookeeper.service + +[Service] +Type=simple +User={{ kafka_user }} +ExecStart=/bin/sh -c '/home/{{ kafka_user }}/kafka/bin/kafka-server-start.sh /home/{{ kafka_user }}/kafka/config/server.properties > /home/{{ kafka_user }}/kafka/kafka.log 2>&1' +ExecStop=/home/{{ kafka_user }}/kafka/bin/kafka-server-stop.sh +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/data/ansible/integration_tests/kafka.yaml b/data/ansible/integration_tests/kafka.yaml new file mode 100644 index 000000000..89aaa33a2 --- /dev/null +++ b/data/ansible/integration_tests/kafka.yaml @@ -0,0 +1,74 @@ +--- +- name: Ensure group "kafka" exists + group: + name: "{{ kafka_user }}" + state: present + +- name: Add the user 'kafka' + user: + name: "{{ kafka_user }}" + # password: "{{ kafka_user_password }}" + groups: "sudo,{{ kafka_user }}" + +- name: Install the java + apt: + name: default-jdk + +- name: Ensure download folder + file: + state: directory + mode: 'u=rwx,go=rx' + owner: "{{ kafka_user }}" + group: "{{ kafka_user }}" + path: "{{ kafka_download_folder }}" + +- name: Fetch kafka binary package + get_url: + dest: "{{ kafka_download_folder }}/{{ kafka_base_name }}.tgz" + url: "{{ kafka_url }}" + +- name: Uncompress the kafka tar + unarchive: + copy: no + creates: "/home/{{ kafka_user }}/{{ kafka_base_name }}" + dest: "{{ kafka_install_folder }}" + src: "{{ kafka_download_folder }}/{{ kafka_base_name }}.tgz" + mode: 'u=rwx,go=rx' + owner: "{{ kafka_user }}" + group: "{{ kafka_user }}" + +- name: Link kafka to the right version + file: + path: "{{ kafka_install_folder }}/kafka" + src: "{{ kafka_install_folder }}/{{ kafka_base_name }}" + owner: "{{ kafka_user }}" + group: "{{ kafka_user }}" + state: link + +- name: Add Zookeeper SystemD script + become: yes + template: + dest: /etc/systemd/system/zookeeper.service + mode: u+rw,g+rw,o+r + src: zookeeper.service.j2 + +- name: Add Kafka SystemD script + become: yes + template: + dest: /etc/systemd/system/kafka.service + mode: u+rw,g+rw,o+r + src: kafka.service.j2 + +- name: Ensure Kafka is enabled for SystemD + become: yes + systemd: + daemon_reload: yes + name: kafka + enabled: yes + +- name: Ensure Kafka is running + become: yes + service: + enabled: yes + name: kafka + state: started diff --git a/data/ansible/integration_tests/main.yaml b/data/ansible/integration_tests/main.yaml new file mode 100644 index 000000000..da38f2538 --- /dev/null +++ b/data/ansible/integration_tests/main.yaml @@ -0,0 +1,152 @@ +--- +- hosts: all + vars: + ############################################################### + ##################### Golang Vars ############################# + ############################################################### + # Go language SDK version number + golang_version: '1.12.7' + # Mirror to download the Go language SDK redistributable package from + golang_mirror: 'https://storage.googleapis.com/golang' + # Base installation directory the Go language SDK distribution + golang_install_dir: '/usr/local/go' + # Directory to store files downloaded for Go language SDK installation + golang_download_dir: "{{ x_ansible_download_dir | default(ansible_env.HOME + '/.ansible/tmp/downloads') }}" + # Location for GOPATH environment variable + golang_gopath: "/home/{{ gouser }}/go" + # Filename of Go language SDK redistributable package + golang_redis_filename: 'go{{ golang_version }}.linux-amd64.tar.gz' + ############################################################### + ###################### Kafka Vars ############################# + ############################################################### + kafka_apache_mirror: https://archive.apache.org/dist/ + kafka_user: kafka + kafka_version_kafka: 2.1.0 + kafka_version_scala: 2.11 + kafka_base_name: "kafka_{{ kafka_version_scala }}-{{ kafka_version_kafka }}" + kafka_url: "{{ kafka_apache_mirror }}/kafka/{{ kafka_version_kafka }}/{{ kafka_base_name }}.tgz" + kafka_download_folder: "/home/{{ kafka_user }}/Downloads" + kafka_install_folder: "/home/{{ kafka_user }}" + # kafka_user_password: "123456y" + + ############################################################### + # CGRateS location + cgrates_dir: "{{ golang_gopath }}/src/github.com/cgrates/cgrates" + ############################################################### + remote_user: root + tasks: + +########################################################################################################################### + +########################################################################################################################### +# install dependencies + - name: Install build-essential + apt: + name: build-essential + state: present + + - name: Install the git + apt: + name: git + + - name: Install the redis + apt: + name: redis-server + + - name: Install the mongo + apt: + name: mongodb-server + + - name: Install the mysql + apt: + name: mysql-server + + - name: Install the postgresql + apt: + name: postgresql + + - name: Install the postgresql-contrib + apt: + name: postgresql-contrib + +########################################################################################################################### + + - name: Install kafka + include: kafka.yaml + + - name: Install rabbitmq + include: rabbitmq.yaml +########################################################################################################################### + +########################################################################################################################### + # install golang + - name: install unarchive dependencies (zypper) + become: yes + zypper: + name: + - gzip + - tar + state: present + when: ansible_pkg_mgr == 'zypper' + + - name: Install golang + include: go.yaml + + # glide + - name: install glide + command: go get -u github.com/Masterminds/glide + become_user: "{{ gouser }}" +########################################################################################################################### + +########################################################################################################################### +# install cgrates + - name: create cgrates directory + file: + state: directory + mode: 'u=rwx,go=rx' + owner: "{{ gouser }}" + group: "{{ gouser }}" + dest: '{{ cgrates_dir }}' + become_user: "{{ gouser }}" + + - name: git clone cgrates + git: + repo: https://github.com/cgrates/cgrates.git + dest: '{{ cgrates_dir }}' + become: yes + become_user: "{{ gouser }}" + + - name: glide install + command: "{{ golang_gopath }}/bin/glide install" + args: + chdir: '{{ cgrates_dir }}' + + - name: build cgrates + command: 'sh {{ cgrates_dir }}/build.sh' + args: + chdir: '{{ cgrates_dir }}' + + - name: symbol link + file: + src: "{{ cgrates_dir }}/data" + dest: "/usr/share/cgrates" + state: link +########################################################################################################################### + +########################################################################################################################### +# post install + - name: post install mysql + command: 'sh {{ cgrates_dir }}/data/storage/mysql/setup_cgr_db.sh root CGRateS.org localhost' + args: + chdir: '{{ cgrates_dir }}/data/storage/mysql/' + + - name: post install postgres2 + command: 'sh {{ cgrates_dir }}/data/storage/postgres/create_db_with_users.sh' + args: + chdir: '{{ cgrates_dir }}/data/storage/postgres/' + + - name: post install mongo + command: 'sh {{ cgrates_dir }}/data/storage/mongo/setup_cgr_db.sh' + args: + chdir: '{{ cgrates_dir }}/data/storage/mongo/' + diff --git a/data/ansible/integration_tests/rabbitmq.yaml b/data/ansible/integration_tests/rabbitmq.yaml new file mode 100644 index 000000000..886fa4a74 --- /dev/null +++ b/data/ansible/integration_tests/rabbitmq.yaml @@ -0,0 +1,26 @@ +--- +- name: Add an apt key by id for rabbitmq + apt_key: + url: https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc + state: present + +- name: Install the apt-transport-https + apt: + name: apt-transport-https + +- name: Add apt repository for erlang + apt_repository: + repo: "deb https://dl.bintray.com/rabbitmq-erlang/debian {{ ansible_distribution_release }} erlang-21.x" + filename: rabbitmq_erlang + update_cache: no + +- name: Add apt repository for rabbitmq + apt_repository: + repo: "deb https://dl.bintray.com/rabbitmq/debian {{ ansible_distribution_release }} main" + filename: rabbitmq_main + update_cache: yes + +- name: Install RabbitMQ + apt: + name: "rabbitmq-server" + state: present \ No newline at end of file diff --git a/data/ansible/integration_tests/zookeeper.service.j2 b/data/ansible/integration_tests/zookeeper.service.j2 new file mode 100644 index 000000000..ba37856c0 --- /dev/null +++ b/data/ansible/integration_tests/zookeeper.service.j2 @@ -0,0 +1,13 @@ +[Unit] +Requires=network.target remote-fs.target +After=network.target remote-fs.target + +[Service] +Type=simple +User={{ kafka_user }} +ExecStart=/home/{{ kafka_user }}/kafka/bin/zookeeper-server-start.sh /home/{{ kafka_user }}/kafka/config/zookeeper.properties +ExecStop=/home/{{ kafka_user }}/kafka/bin/zookeeper-server-stop.sh +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/general_tests/cdrs_onlexp_it_test.go b/general_tests/cdrs_onlexp_it_test.go index 2df5bb417..03cc19d59 100644 --- a/general_tests/cdrs_onlexp_it_test.go +++ b/general_tests/cdrs_onlexp_it_test.go @@ -68,7 +68,7 @@ func TestCDRsOnExpInitCdrDb(t *testing.T) { t.Fatal("Error removing folder: ", cdrsMasterCfg.GeneralCfg().FailedPostsDir, err) } - if err := os.Mkdir(cdrsMasterCfg.GeneralCfg().FailedPostsDir, 0700); err != nil { + if err := os.MkdirAll(cdrsMasterCfg.GeneralCfg().FailedPostsDir, 0700); err != nil { t.Error(err) }