Всем привет! Уже на следующей неделе стартуют занятия в группе «Java QA Engineer». Этому и будет приурочена нынешняя публикация.
sudo docker run -p 8086:8086 -v $PWD:/var/lib/influxdb influxdb
curl -i -XPOST http://localhost:8086/query --data-urlencode "q=CREATE DATABASE selenium"
public class SampleTest {
@Test(description = "login")
public void login(){
}
@Test(description = "search for flights", dependsOnMethods = "login")
public void search(){
}
@Test(description = "select flight", dependsOnMethods = "search")
public void select(){
}
@Test(description = "book flight", dependsOnMethods = "select")
public void book(){
}
@Test(description = "logout", dependsOnMethods = "book")
public void logout(){
}
}
<dependency>
<groupId>org.influxdb</groupId>
<artifactId>influxdb-java</artifactId>
<version>2.12</version>
</dependency>
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.Point;
public class ResultSender {
private static final InfluxDB INFLXUDB = InfluxDBFactory.connect("http://localhost:8086", "root", "root");
private static final String DATABASE = "selenium";
static{
INFLXUDB.setDatabase(DATABASE);
}
public static void send(final Point point){
INFLXUDB.write(point);
}
}
import org.influxdb.dto.Point;
import org.testng.ITestContext;
import org.testng.ITestListener;
import org.testng.ITestResult;
import java.util.concurrent.TimeUnit;
public class ExecutionListener implements ITestListener {
public void onTestStart(ITestResult iTestResult) {
}
public void onTestSuccess(ITestResult iTestResult) {
this.sendTestMethodStatus(iTestResult, "PASS");
}
public void onTestFailure(ITestResult iTestResult) {
this.sendTestMethodStatus(iTestResult, "FAIL");
}
public void onTestSkipped(ITestResult iTestResult) {
this.sendTestMethodStatus(iTestResult, "SKIPPED");
}
public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {
}
public void onStart(ITestContext iTestContext) {
}
public void onFinish(ITestContext iTestContext) {
this.sendTestClassStatus(iTestContext);
}
private void sendTestMethodStatus(ITestResult iTestResult, String status) {
Point point = Point.measurement("testmethod")
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
.tag("testclass", iTestResult.getTestClass().getName())
.tag("name", iTestResult.getName())
.tag("description", iTestResult.getMethod().getDescription())
.tag("result", status)
.addField("duration", (iTestResult.getEndMillis() - iTestResult.getStartMillis()))
.build();
ResultSender.send(point);
}
private void sendTestClassStatus(ITestContext iTestContext) {
Point point = Point.measurement("testclass")
.time(System.currentTimeMillis(), TimeUnit.MILLISECONDS)
.tag("name", iTestContext.getAllTestMethods()[0].getTestClass().getName())
.addField("duration", (iTestContext.getEndDate().getTime() - iTestContext.getStartDate().getTime()))
.build();
ResultSender.send(point);
}
}
Примечание: Используйте дополнительный тег, отвечающий вашим задачам в приведенном выше примере, чтобы классифицировать результаты. Например tag(“scenario”, “login flow”).
<suite name="My suite">
<listeners>
<listener class-name="com.tag.realtime.ExecutionListener" />
</listeners>
<test name="Test1">
<classes>
<class name="com.tag.realtime.SampleTest"/>
</classes>
</test>
<test name="Test2">
<classes>
<class name="com.tag.realtime.Sample2Test"/>
</classes>
</test>
</suite>
@Listeners(ExecutionListener.class)
public class SampleTest {
@Test
public void test(){
}
}
docker run -d -p 3000:3000
--name=grafana -e "GF_INSTALL_PLUGINS=grafana-piechart-panel" -v $PWD:/var/lib/grafana grafana/grafana
Примечание: Если вы используете Grafana с Docker и пытаетесь получить доступ как ‘Server default’, НЕ ИСПОЛЬЗУЙТЕ localhost в строке подключения к InfluxDB. Все потому, что здесь localhost – это контейнер Grafana, а не физическая машина. Таким образом контейнер Grafana не сможет найти InfluxDB.
К сожалению, не доступен сервер mySQL