de43c6a163
Why I did it the motivation for this PR is to add retry_call to several test cases in the community, for example, the following cases: test_show_platform_fanstatus_mocked test_show_platform_temperature_mocked are executing a command once and comparing the output to the expected mock data, sometimes differences between the mock and the actual are causing the tests to fail. retry will make these tests more stable. retry will also be more efficient than sleep which will cause the tests to run longer because sometimes it is not necessary to sleep all that time, retry will only run a function only until it passed. How I did it added retry to the docker file How to verify it I run the tests with retry on the docker after installing the retry package Signed-off-by: Sharon Lutati <slutati@nvidia.com>
185 lines
6.2 KiB
Django/Jinja
185 lines
6.2 KiB
Django/Jinja
FROM ubuntu:18.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
RUN apt-get update && apt-get install -y build-essential \
|
|
cmake \
|
|
curl \
|
|
default-jre \
|
|
gcc \
|
|
git \
|
|
inetutils-ping \
|
|
iproute2 \
|
|
isc-dhcp-client \
|
|
libffi-dev \
|
|
libssl-dev \
|
|
libxml2 \
|
|
libxslt1-dev \
|
|
make \
|
|
openssh-server \
|
|
psmisc \
|
|
python \
|
|
python-dev \
|
|
python-scapy \
|
|
python-setuptools \
|
|
python-pip \
|
|
python3-pip \
|
|
python3-venv \
|
|
rsyslog \
|
|
snmp \
|
|
sshpass \
|
|
sudo \
|
|
tcpdump \
|
|
telnet \
|
|
vim
|
|
|
|
RUN pip install cffi==1.10.0 \
|
|
contextlib2==0.6.0.post1 \
|
|
cryptography==3.3.2 \
|
|
"future>=0.16.0" \
|
|
gitpython \
|
|
ipaddr \
|
|
ipython==5.4.1 \
|
|
ixnetwork-restpy==1.0.64 \
|
|
ixnetwork-open-traffic-generator==0.0.79 \
|
|
snappi[ixnetwork]==0.3.13 \
|
|
jinja2==2.7.2 \
|
|
jsonpatch \
|
|
lxml \
|
|
natsort \
|
|
netaddr \
|
|
netmiko==2.4.2 \
|
|
paramiko==2.7.1 \
|
|
passlib \
|
|
pexpect \
|
|
prettytable \
|
|
psutil \
|
|
pyasn1==0.1.9 \
|
|
pyfiglet \
|
|
pylint==1.8.1 \
|
|
pyro4 \
|
|
pysnmp==4.2.5 \
|
|
pytest-repeat \
|
|
pytest-html \
|
|
pytest-xdist==1.28.0 \
|
|
pytest==4.6.5 \
|
|
redis \
|
|
requests \
|
|
rpyc \
|
|
six \
|
|
tabulate \
|
|
textfsm \
|
|
virtualenv \
|
|
retry \
|
|
&& git clone https://github.com/p4lang/scapy-vxlan.git \
|
|
&& cd scapy-vxlan \
|
|
&& python setup.py install \
|
|
&& cd .. \
|
|
&& rm -fr scapy-vxlan \
|
|
&& wget https://github.com/nanomsg/nanomsg/archive/1.0.0.tar.gz \
|
|
&& tar xvfz 1.0.0.tar.gz \
|
|
&& cd nanomsg-1.0.0 \
|
|
&& mkdir -p build \
|
|
&& cd build \
|
|
&& cmake .. \
|
|
&& make install \
|
|
&& ldconfig \
|
|
&& cd ../.. \
|
|
&& rm -fr nanomsg-1.0.0 \
|
|
&& rm -f 1.0.0.tar.gz \
|
|
&& pip install nnpy \
|
|
&& pip install dpkt
|
|
|
|
# Install docker-ce-cli
|
|
RUN apt-get update \
|
|
&& apt-get install -y \
|
|
apt-transport-https \
|
|
ca-certificates \
|
|
curl \
|
|
gnupg-agent \
|
|
software-properties-common \
|
|
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - \
|
|
&& add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
|
|
&& apt-get update \
|
|
&& apt-get install -y docker-ce-cli
|
|
|
|
# Install Azure CLI
|
|
RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash
|
|
|
|
# Install Microsoft Azure Kusto Library for Python
|
|
RUN pip install azure-kusto-data==0.0.13 \
|
|
azure-kusto-ingest==0.0.13
|
|
|
|
RUN pip install wheel==0.33.6
|
|
|
|
## Copy and install sonic-mgmt docker dependencies
|
|
COPY \
|
|
{% for deb in docker_sonic_mgmt_debs.split(' ') -%}
|
|
debs/{{ deb }}{{' '}}
|
|
{%- endfor -%}
|
|
debs/
|
|
|
|
RUN dpkg -i \
|
|
{% for deb in docker_sonic_mgmt_debs.split(' ') -%}
|
|
debs/{{ deb }}{{' '}}
|
|
{%- endfor %}
|
|
|
|
RUN pip install ansible==2.8.12
|
|
|
|
RUN pip install pysubnettree
|
|
|
|
# Install pytest-ansible module with 'become', 'become_user' parameters support
|
|
RUN git clone https://github.com/ansible/pytest-ansible.git \
|
|
&& cd pytest-ansible \
|
|
&& git checkout d33c025f070a9c870220a157cc5a999fda68de44 \
|
|
&& python setup.py install \
|
|
&& cd .. \
|
|
&& rm -fr pytest-ansible
|
|
|
|
RUN mkdir /var/run/sshd
|
|
EXPOSE 22
|
|
|
|
# Add user
|
|
ARG user
|
|
ARG uid
|
|
ARG guid
|
|
ARG hostname
|
|
|
|
ENV BUILD_HOSTNAME $hostname
|
|
ENV USER $user
|
|
ENV CC=gcc CPP=cpp CXX=c++ LDSHARED="gcc -pthread -shared" PYMSSQL_BUILD_WITH_BUNDLED_FREETDS=1
|
|
|
|
RUN groupadd -f -r -g $guid g$user
|
|
|
|
RUN useradd $user -l -u $uid -g $guid -d /var/$user -m -s /bin/bash
|
|
|
|
COPY sonic-jenkins.pub /var/$user/.ssh/authorized_keys2
|
|
|
|
RUN echo "Host *\n\tStrictHostKeyChecking no\n" > /var/$user/.ssh/config
|
|
RUN chown $user /var/$user/.ssh -R
|
|
RUN chmod go= /var/$user/.ssh -R
|
|
|
|
# Add user to sudoers
|
|
RUN echo "$user ALL=(ALL) NOPASSWD:ALL" >>/etc/sudoers
|
|
|
|
USER $user
|
|
WORKDIR /var/$user
|
|
|
|
# Add az symlink for backwards compatibility
|
|
RUN mkdir bin && ln -s /usr/bin/az bin/az
|
|
|
|
# Install Virtual Environments
|
|
RUN python -m virtualenv --system-site-packages env-201811
|
|
RUN env-201811/bin/pip install cryptography==3.3.2 ansible==2.0.0.2
|
|
|
|
RUN python3 -m venv env-python3
|
|
RUN env-python3/bin/pip3 install cryptography==3.3.2 azure-kusto-data azure-kusto-ingest defusedxml pytest aiohttp
|
|
|
|
# NOTE: There is an ordering dependency for pycryptodome. Leaving this at
|
|
# the end until we figure that out.
|
|
RUN pip install pycryptodome==3.9.8
|
|
|
|
# Install allure-pytest library
|
|
RUN pip install --upgrade setuptools \
|
|
&& pip install allure-pytest==2.8.22
|