You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
8.0 KiB
260 lines
8.0 KiB
4 months ago
|
# VTS Dashboard
|
||
|
|
||
|
## Introduction
|
||
|
|
||
|
The VTS Dashboard displays the summarized results of the Multi Device Tests along with graphs.
|
||
|
|
||
|
## Installation
|
||
|
|
||
|
### Steps to run locally:
|
||
|
|
||
|
1. Google App Engine uses Java 8. Install Java 8 before running running locally:
|
||
|
'sudo apt install openjdk-8-jdk'
|
||
|
|
||
|
To use java 8:
|
||
|
Copy the following lines in ~/.bashrc :
|
||
|
|
||
|
```
|
||
|
function setup_jdk() {
|
||
|
# Remove the current JDK from PATH
|
||
|
if [ -n "$JAVA_HOME" ] ; then
|
||
|
PATH=${PATH/$JAVA_HOME\/bin:/}
|
||
|
fi
|
||
|
export JAVA_HOME=$1
|
||
|
export PATH=$JAVA_HOME/bin:$PATH
|
||
|
}
|
||
|
|
||
|
function use_java8() {
|
||
|
# setup_jdk /usr/java/jre1.8.0_73
|
||
|
setup_jdk /usr/lib/jvm/java-8-openjdk-amd64
|
||
|
}
|
||
|
|
||
|
Then from cmd:
|
||
|
$ use_java8
|
||
|
```
|
||
|
|
||
|
2. Maven is used for build. Install Maven 3.3.9:
|
||
|
Download maven from:
|
||
|
https://maven.apache.org/download.cgi
|
||
|
|
||
|
Steps to Install Maven:
|
||
|
1) Unzip the Binary tar:
|
||
|
tar -zxf apache-maven-3.3.3-bin.tar.gz
|
||
|
|
||
|
2) Move the application directory to /usr/local
|
||
|
sudo cp -R apache-maven-3.3.3 /usr/local
|
||
|
|
||
|
3) Make a soft link in /usr/bin for universal access of mvn
|
||
|
sudo ln -s /usr/local/apache-maven-3.3.3/bin/mvn /usr/bin/mvn
|
||
|
|
||
|
4) Verify maven installation:
|
||
|
$ mvn -v
|
||
|
|
||
|
The output should resemble this:
|
||
|
|
||
|
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T08:41:47-08:00)
|
||
|
Maven home: /opt/apache-maven-3.3.9
|
||
|
Java version: 1.8.0_45-internal, vendor: Oracle Corporation
|
||
|
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
|
||
|
Default locale: en_US, platform encoding: UTF-8
|
||
|
OS name: "linux", version: "3.13.0-88-generic", arch: "amd64", family: "unix"
|
||
|
|
||
|
3. Install Google Cloud SDK. Follow the instructions listed on official source:
|
||
|
https://cloud.google.com/sdk/docs/quickstart-linux
|
||
|
|
||
|
The default location where the application searches for a google-cloud-sdk is:
|
||
|
/usr/local/share/google/google-cloud-sdk
|
||
|
|
||
|
Therefore move the extracted folder to this location: /usr/local/share/google/
|
||
|
|
||
|
Otherwise, to have a custom location, specify the location of
|
||
|
google-cloud-sdk in test/vti/dashboard/pom.xml by putting the configuration:
|
||
|
|
||
|
```
|
||
|
<configuration>
|
||
|
<gcloud_directory>PATH/TO/GCLOUD_DIRECTORY</gcloud_directory>
|
||
|
</configuration>
|
||
|
```
|
||
|
within the 'com.google.appengine' plugin tag :
|
||
|
|
||
|
## To run GAE on local machine:
|
||
|
|
||
|
$ cd test/vti/dashboard
|
||
|
$ mvn appengine:devserver
|
||
|
|
||
|
## To deploy to Google App Engine
|
||
|
|
||
|
$ cd test/vti/dashboard
|
||
|
$ mvn appengine:update
|
||
|
|
||
|
visit https://<YOUR-PROJECT-NAME>.appspot.com
|
||
|
|
||
|
## Update config file through gcloud command
|
||
|
|
||
|
You can deploy or update GAE's a config file without deploying the whole project.
|
||
|
The next commands show how to do it.
|
||
|
|
||
|
```
|
||
|
gcloud app deploy --project=<YOUR-PROJECT-NAME> cron.xml
|
||
|
gcloud app deploy --project=<YOUR-PROJECT-NAME> queue.xml
|
||
|
gcloud app deploy --project=<YOUR-PROJECT-NAME> datastore-indexes.xml
|
||
|
```
|
||
|
|
||
|
## Test Data
|
||
|
|
||
|
### Purpose
|
||
|
|
||
|
When you start your local GAE server, you will see empty page as the local datastore do not have any data.
|
||
|
So we need to put some sample data into local datastore so that developers are able to continue to
|
||
|
develop new features or fix bugs. Thus, we developed the next two test APIs, which are only available
|
||
|
in your local dev environment.
|
||
|
|
||
|
```
|
||
|
http://127.0.0.1:8080/api/test_data/report
|
||
|
http://127.0.0.1:8080/api/test_data/plan
|
||
|
```
|
||
|
|
||
|
### How to set test data on json files for generating mock data on local dev server
|
||
|
|
||
|
If you want to generate some mock data for your local development, you need to set some fake data
|
||
|
on json files under the testdata folder. However, you need to abide by some rules in doing this,
|
||
|
otherwise you will end up with errors from the mock data dev API.
|
||
|
|
||
|
First, in test-plan-report-data.json, you need to set the same number of data under "testCaseNames"
|
||
|
and "results". For example, if you put 5 elements of data in "testCaseNames", you should put the same
|
||
|
number of data under "results".
|
||
|
|
||
|
```json
|
||
|
........
|
||
|
"testCaseRunList": [
|
||
|
{
|
||
|
"testCaseNames": [
|
||
|
"stdatomic.atomic_exchange_64bit",
|
||
|
"stdatomic.atomic_compare_exchange_64bit",
|
||
|
"stdatomic.atomic_exchange_64bit",
|
||
|
"stdatomic.atomic_compare_exchange_64bit",
|
||
|
"stdatomic.atomic_exchange_64bit",
|
||
|
"stdatomic.atomic_compare_exchange_64bit"
|
||
|
],
|
||
|
"results": [
|
||
|
2,
|
||
|
2,
|
||
|
2,
|
||
|
2,
|
||
|
2,
|
||
|
2
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
........
|
||
|
```
|
||
|
|
||
|
Second, in test-report-data.json file, you need to make sure that "testModules" should have
|
||
|
the "testName"'s value under "testRunList" and the "testTimes" should have the "startTimestamp"'s value
|
||
|
in the test-report-data.json file.
|
||
|
|
||
|
test-report-data.json
|
||
|
```json
|
||
|
......
|
||
|
"testRunList": [
|
||
|
{
|
||
|
"testName": "BionicUnitTests", <- "testModules" should be copied from here
|
||
|
"type": 1,
|
||
|
"startTimestamp":1515562811, <- "testTimes" should be copied from here
|
||
|
......
|
||
|
{
|
||
|
"testName": "CpuProfilingTest", <- "testModules" should be copied from here
|
||
|
"type": 2,
|
||
|
"startTimestamp":1515562811, <- "testTimes" should be copied from here
|
||
|
......
|
||
|
```
|
||
|
|
||
|
test-plan-report-data.json
|
||
|
```json
|
||
|
......
|
||
|
{
|
||
|
"testPlanName": "vts-serving-staging-fuzz",
|
||
|
"testModules": ["BionicUnitTests", "CpuProfilingTest"],
|
||
|
"testTimes": [1515562811, 1515562811]
|
||
|
},
|
||
|
{
|
||
|
"testPlanName": "vts-serving-staging-hal-conventional",
|
||
|
"testModules": ["BionicUnitTests", "CpuProfilingTest"],
|
||
|
"testTimes": [1515562811, 1515562811]
|
||
|
}
|
||
|
......
|
||
|
```
|
||
|
"testModules" and "testTimes"'s elements order is also matter.
|
||
|
|
||
|
### Command to generate mock data through API
|
||
|
|
||
|
The next two commands will generate mock data in your local dev datastore.
|
||
|
The execution order of the commands is very important, otherwise you can't find some of the data in your local datastore.
|
||
|
Thus, please execute the below command as I wrote in order.
|
||
|
|
||
|
```
|
||
|
curl -d @testdata/test-report-data.json -m 30 -X POST http://127.0.0.1:8080/api/test_data/report -H "Content-Type: application/json" --verbose
|
||
|
curl -d @testdata/test-plan-report-data.json -m 30 -X POST http://127.0.0.1:8080/api/test_data/plan -H "Content-Type: application/json" --verbose
|
||
|
```
|
||
|
|
||
|
## Monitoring
|
||
|
|
||
|
The following steps list how to create a monitoring service for the VTS Dashboard.
|
||
|
|
||
|
### Create a Stackdriver account
|
||
|
|
||
|
1. Go to Google Cloud Platform Console:
|
||
|
http://console.developers.google.com
|
||
|
|
||
|
2. In the Google Cloud Platform Console, select Stackdriver > Monitoring.
|
||
|
If your project is not in a Stackdriver account you'll see a message to
|
||
|
create a new project.
|
||
|
|
||
|
3. Click Create new Stackdriver account and then Continue.
|
||
|
|
||
|
4. With your project shown, click Create account.
|
||
|
|
||
|
5. In the page, "Add Google Cloud Platform projects to monitor", click Continue to skip ahead.
|
||
|
|
||
|
6. In the page, "Monitor AWS accounts", click Done to skip ahead.
|
||
|
|
||
|
7. In a few seconds you see the following message:
|
||
|
"Finished Initial collection"
|
||
|
Click Launch Monitoring.
|
||
|
|
||
|
8. In the page, "Get reports by email", click No reports and Continue.
|
||
|
|
||
|
9. You will see your Stackdriver account dashboard.
|
||
|
Close the "Welcome to Stackdriver" banner if you don't need it.
|
||
|
|
||
|
### Steps to create an uptime check and an alerting policy
|
||
|
|
||
|
1. Go to Stack Monitoring console:
|
||
|
https://app.google.stackdriver.com/
|
||
|
|
||
|
2. Go to Alerting > Uptime Checks in the top menu and then click Add Uptime Check.
|
||
|
You see the New Uptime Check panel.
|
||
|
|
||
|
3. Fill in the following fields for the uptime check:
|
||
|
|
||
|
Check type: HTTP
|
||
|
Resource Type: Instance
|
||
|
Applies To: Single, lamp-1-vm
|
||
|
Leave the other fields with their default values.
|
||
|
|
||
|
4. Click Test to verify your uptime check is working.
|
||
|
|
||
|
5. Click Save. After you click on save you'll see a panel to
|
||
|
'Create Alerting Policy'
|
||
|
|
||
|
6. Fill out the configuration for notifications and click save policy.
|
||
|
|
||
|
### Test the check and alert
|
||
|
|
||
|
This procedure can take up to fifteen minutes.
|
||
|
|
||
|
To test the check and alert, go to the VM Instances page, select your instance, and click Stop from the top menu.
|
||
|
You'll have to wait up to five minutes for the next uptime check to fail. The alert and notification don't happen until the next failure occurs.
|
||
|
|
||
|
To correct the "problem," return to the VM Instances page, select your instance, and click Start from the top menu.
|