summaryrefslogtreecommitdiffhomepage
path: root/test/scenario_test/README.md
blob: 16b0170e9c4af5d77f828f83acaf19076c7a65ec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Scenario Test

This page explains how to set up a scenario test environment and run the test.

## Contents

- [Prerequisites](#prerequisites)
- [Check](#check)
- [Set up dependencies](#set-up-dependencies)
- [Install local source code](#install-local-source-code)
- [Run test](#run-test)
- [Clean up](#clean-up)

## Prerequisites

Assume you finished setting up [Golang](https://golang.org/doc/install) and
[Docker](https://docs.docker.com/installation/ubuntulinux/) on Ubuntu 14.04
Server VM.
We recommend allocating memory more than 8GB to the VM.
Because this scenario test runs a lot of test cases concurrently.

## Check

Please check if Golang and Docker is installed correctly and
make sure the $GOPATH is defined.

```shell
$ go version
go version go1.5.1 linux/amd64

$ echo $GOPATH
/home/yokoi-h/work

$ sudo docker version
Client:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:43:42 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.9.0
 API version:  1.21
 Go version:   go1.4.2
 Git commit:   76d6bc9
 Built:        Tue Nov  3 17:43:42 UTC 2015
 OS/Arch:      linux/amd64
```

## Set up dependencies

Execute the following commands inside the VM to install the dependencies:

1. Get docker images.

    Download docker images pertaining to GoBGP testing.

    ```shell
    $ sudo docker pull golang:1.7
    $ sudo docker pull osrg/gobgp
    $ sudo docker pull osrg/quagga
    $ sudo docker pull osrg/quagga:v1.0
    $ sudo docker pull osrg/exabgp
    ```

1. Clone GoBGP and install python libraries.

    ```shell
    $ mkdir -p $GOPATH/src/github.com/osrg
    $ cd $GOPATH/src/github.com/osrg
    $ git clone https://github.com/osrg/gobgp.git
    $ cd ./gobgp/test
    $ sudo pip install -r pip-requires.txt
    ```

## Install local source code

You need to install local source code into GoBGP docker container.
You also need this operation at every modification to the source code.

```shell
$ cd $GOPATH/src/github.com/osrg/gobgp
$ sudo fab2 -r ./test/lib make-gobgp-ctn
```

## Run test

1. Run all test.

    You can run all scenario tests with run_all_tests.sh.
    If all tests passed, you can see "all tests passed successfully" at the end of the test.

    ```shell
    $ cd $GOPATH/src/github.com/osrg/gobgp/test/scenario_test
    $ ./run_all_tests.sh
    ...
    OK
    all tests passed successfully
    ```

1. Run each test.

    You can run scenario tests individually with each test file.
    See `test/scenario_test/*.py`, for the individual test files.

    ```shell
    $ cd $GOPATH/src/github.com/osrg/gobgp/test/scenario_test
    $ sudo -E PYTHONPATH=$GOBGP/test python3 <scenario test name>.py --gobgp-image=gobgp
    ...
    OK
    ```

## Clean up

A lot of containers, networks temporary files are created during the test.
Let's clean up.

```shell
$ sudo docker rm -f $(sudo docker ps -a -q -f "label=gobgp-test")
$ sudo docker network prune -f --filter "label=gobgp-test"
$ sudo rm -rf /tmp/gobgp
```