summaryrefslogtreecommitdiffstats
path: root/testsuites/run-s3p-test.sh
blob: a0c53b46cf1ce895f2ccbfdfb683b0775b0eb07f (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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#!/bin/bash
# ============LICENSE_START=======================================================
#  Copyright (c) 2023-2024 Nordix Foundation.
# ================================================================================
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
# ============LICENSE_END=========================================================

# Check if the correct number of arguments is provided
if [ $# -ne 2 ]; then
    echo "Usage: $0 <type> <duration>"
    exit 1
fi

type="$1"
duration="$2"

# Check if the type is valid
if [ "$type" != "stability" ] && [ "$type" != "performance" ]; then
    echo "Invalid type. Use 'stability' or 'performance'."
    exit 1
fi

sudo apt update

# Check if OpenJDK 17 is installed
if java --version | grep -q "openjdk 17"; then
    echo "OpenJDK 17 is already installed."
else
    echo "OpenJDK 17 is not installed. Installing..."
    sudo apt install -y openjdk-17-jdk
fi

# Check if docker is installed
if docker --version | grep -q "Docker version"; then
    echo "docker is already installed."
else
    echo "docker is not installed. Installing..."
    # Add docker repository
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

    echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    sudo apt update

    # Install docker
    sudo apt-get install docker-ce docker-ce-cli containerd.io

    sudo chmod 666 /var/run/docker.sock
fi

systemctl status --no-pager docker

docker ps

# Check if docker compose is installed
if docker-compose --version | grep -q "docker-compose version"; then
    echo "docker compose is already installed."
else
    echo "docker compose is not installed. Installing..."
    # Install compose (check if version is still available or update as necessary)
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
fi

# Check if install was successful
docker-compose --version

bash ./stability/src/main/resources/setup/versions.sh

bash ./stability/src/main/resources/setup/start.sh

# Install required packages
sudo apt install -y wget unzip

# Install JMeter
mkdir -p ~/jmeter
wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.5.zip # check if valid version
unzip -q -d ~/jmeter apache-jmeter-5.5.zip
rm apache-jmeter-5.5.zip

# Check if visualvm is installed
if visualvm --help | grep -q "Usage:"; then
    echo "visualvm is already installed."
else
    echo "visualvm is not installed. Installing..."
    # Install compose (check if version is still available or update as necessary)
    sudo apt install visualvm
fi

# Set globally accessable permissions on policy file
sudo chmod 777 /usr/lib/jvm/java-17-openjdk-amd64/bin/visualvm.policy

# Create Java security policy file for VisualVM
file_path="/usr/lib/jvm/java-17-openjdk-amd64/bin/visualvm.policy"

if [ -e "$file_path" ]; then
    echo "File exists already."
else
    echo "File does not exist. Creating now..."
    sudo tee "$file_path" > /dev/null <<EOF
    grant codebase "jrt:/jdk.jstatd" {
       permission java.security.AllPermission;
    };
    grant codebase "jrt:/jdk.internal.jvmstat" {
       permission java.security.AllPermission;
    };
EOF
    sudo chmod 644 "$file_path"  # Adjust file permissions as needed
fi

# check if jstatd is running
process_name="jstatd"

if pgrep "$process_name" > /dev/null; then
    echo "The process '$process_name' is running."
else
    echo "The process '$process_name' is not running. Will run now"
    /usr/lib/jvm/java-17-openjdk-amd64/bin/jstatd -p 1111 -J-Djava.security.policy=/usr/lib/jvm/java-17-openjdk-amd64/bin/visualvm.policy &
fi

visualvm &

tmp_path="/tmp/policydistribution/distributionmount"

if [ -e "$tmp_path" ]; then
    echo "tmp File exists already."
else
    echo "tmp does not exist. Creating now..."
    sudo mkdir -p /tmp/policydistribution/distributionmount
    sudo chmod -R a+trwx /tmp
fi

sleep 240

# Run different tests based on the type
if [ "$type" == "stability" ]; then
    echo "Running stability test for $duration seconds in directory ${PWD}..."
    bash ./stability/src/main/resources/testplans/run_test.sh "$duration"
    echo "Stability test completed."
elif [ "$type" == "performance" ]; then
    echo "Running performance test for $duration seconds in directory ${PWD}..."
    bash ./performance/src/main/resources/testplans/run_test.sh "$duration"
    echo "Performance test completed."
fi