
com.qaprosoft.zafira.models.db.TestRun Maven / Gradle / Ivy
/*******************************************************************************
* Copyright 2013-2018 QaProSoft (http://www.qaprosoft.com).
*
* 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.
*******************************************************************************/
package com.qaprosoft.zafira.models.db;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.joda.time.LocalDateTime;
import org.joda.time.Seconds;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
@JsonInclude(Include.NON_NULL)
public class TestRun extends AbstractEntity
{
private static final long serialVersionUID = -1847933012610222160L;
private static final String NAME = "%s %s (%s) on %s %s";
private Map configuration = new HashMap<>();
public enum Initiator
{
SCHEDULER, UPSTREAM_JOB, HUMAN
}
private String ciRunId;
private User user;
private TestSuite testSuite;
private Status status;
private String scmURL;
private String scmBranch;
private String scmCommit;
@JsonIgnore
private String configXML;
private WorkItem workItem;
private Job job;
private Integer buildNumber;
private Job upstreamJob;
private Integer upstreamJobBuildNumber;
private Initiator startedBy;
private Project project;
private boolean knownIssue;
private boolean blocker;
private String env;
private String platform;
private String appVersion;
private Date startedAt;
private Integer elapsed;
private Integer eta;
private String comments;
private String slackChannels;
private TestConfig config;
private Integer passed;
private Integer failed;
private Integer failedAsKnown;
private Integer failedAsBlocker;
private Integer skipped;
private Integer inProgress;
private Integer aborted;
private Integer queued;
private boolean reviewed;
public boolean isReviewed() {
return reviewed;
}
public void setReviewed(boolean reviewed) {
this.reviewed = reviewed;
}
public User getUser()
{
return user;
}
public void setUser(User user)
{
this.user = user;
}
public TestSuite getTestSuite()
{
return testSuite;
}
public void setTestSuite(TestSuite testSuite)
{
this.testSuite = testSuite;
}
public Status getStatus()
{
return status;
}
public void setStatus(Status status)
{
this.status = status;
}
public String getScmURL()
{
return scmURL;
}
public void setScmURL(String scmURL)
{
this.scmURL = scmURL;
}
public String getScmBranch()
{
return scmBranch;
}
public void setScmBranch(String scmBranch)
{
this.scmBranch = scmBranch;
}
public String getScmCommit()
{
return scmCommit;
}
public void setScmCommit(String scmCommit)
{
this.scmCommit = scmCommit;
}
public String getConfigXML()
{
return configXML;
}
public void setConfigXML(String configXML)
{
this.configXML = configXML;
}
public String getName(Map configuration) {
this.configuration = configuration;
String appVersion = argumentIsPresent("app_version")? this.configuration.get("app_version") + " - ": "";
String platformInfo = buildPlatformInfo();
String testRunName = String.format(NAME, appVersion, testSuite.getName(), testSuite.getFileName(),
this.configuration.get("env"), platformInfo).trim();
return testRunName;
}
private boolean argumentIsPresent(String arg, String... ignoreValues) {
if(configuration.get(arg) == null || "".equals(configuration.get(arg)) || configuration.get(arg).equalsIgnoreCase("null")) {
return false;
}
for(String ignoreValue: ignoreValues) {
if(configuration.get(arg).equals(ignoreValue)) {
return false;
}
}
return true;
}
private String buildPlatformInfo() {
String platformInfo = "%s %s %s";
String mobilePlatformVersion = argumentIsPresent("mobile_platform_name")? configuration.get("mobile_platform_name"): "";
String browser = argumentIsPresent("browser")? configuration.get("browser"): "";
String locale = argumentIsPresent("locale", "en_US", "en", "US")? configuration.get("locale"): "";
platformInfo = String.format(platformInfo, mobilePlatformVersion, browser, locale);
platformInfo = platformInfo.trim();
while(platformInfo.contains(" ")) {
platformInfo = platformInfo.replaceFirst(" ", " ");
}
platformInfo = "(" + platformInfo + ")";
if(!platformInfo.equals("()"))
return platformInfo;
else
return "";
}
public WorkItem getWorkItem()
{
return workItem;
}
public void setWorkItem(WorkItem workItem)
{
this.workItem = workItem;
}
public Job getJob()
{
return job;
}
public void setJob(Job job)
{
this.job = job;
}
public Integer getBuildNumber()
{
return buildNumber;
}
public void setBuildNumber(Integer buildNumber)
{
this.buildNumber = buildNumber;
}
public Job getUpstreamJob()
{
return upstreamJob;
}
public void setUpstreamJob(Job upstreamJob)
{
this.upstreamJob = upstreamJob;
}
public Integer getUpstreamJobBuildNumber()
{
return upstreamJobBuildNumber;
}
public void setUpstreamJobBuildNumber(Integer upstreamJobBuildNumber)
{
this.upstreamJobBuildNumber = upstreamJobBuildNumber;
}
public Initiator getStartedBy()
{
return startedBy;
}
public void setStartedBy(Initiator startedBy)
{
this.startedBy = startedBy;
}
public String getCiRunId()
{
return ciRunId;
}
public void setCiRunId(String ciRunId)
{
this.ciRunId = ciRunId;
}
public Integer getPassed()
{
return passed;
}
public void setPassed(Integer passed)
{
this.passed = passed;
}
public Integer getFailed()
{
return failed;
}
public void setFailed(Integer failed)
{
this.failed = failed;
}
public Integer getFailedAsKnown()
{
return failedAsKnown;
}
public void setFailedAsKnown(Integer failedAsKnown)
{
this.failedAsKnown = failedAsKnown;
}
public Integer getFailedAsBlocker() {
return failedAsBlocker;
}
public void setFailedAsBlocker(Integer failedAsBlocker) {
this.failedAsBlocker = failedAsBlocker;
}
public Integer getSkipped()
{
return skipped;
}
public void setSkipped(Integer skipped)
{
this.skipped = skipped;
}
public Integer getInProgress() {
return inProgress;
}
public void setInProgress(Integer inProgress) {
this.inProgress = inProgress;
}
public Integer getAborted()
{
return aborted;
}
public void setAborted(Integer aborted)
{
this.aborted = aborted;
}
public Integer getQueued()
{
return queued;
}
public void setQueued(Integer queued)
{
this.queued = queued;
}
public Project getProject()
{
return project;
}
public void setProject(Project project)
{
this.project = project;
}
public boolean isKnownIssue()
{
return knownIssue;
}
public void setKnownIssue(boolean knownIssue)
{
this.knownIssue = knownIssue;
}
public boolean isBlocker() {
return blocker;
}
public void setBlocker(boolean blocker) {
this.blocker = blocker;
}
public String getEnv()
{
return env;
}
public void setEnv(String env)
{
this.env = env;
}
public String getPlatform()
{
return platform;
}
public void setPlatform(String platform)
{
this.platform = platform;
}
public Date getStartedAt()
{
return startedAt;
}
public void setStartedAt(Date startedAt)
{
this.startedAt = startedAt;
}
public Integer getElapsed()
{
return elapsed;
}
public void setElapsed(Integer elapsed)
{
this.elapsed = elapsed;
}
public Integer getEta()
{
return eta;
}
public void setEta(Integer eta)
{
this.eta = eta;
}
public String getComments()
{
return comments;
}
public void setComments(String comments)
{
this.comments = comments;
}
public String getSlackChannels()
{
return slackChannels;
}
public void setSlackChannels(String slackChannels)
{
this.slackChannels = slackChannels;
}
public String getAppVersion()
{
return appVersion;
}
public void setAppVersion(String appVersion)
{
this.appVersion = appVersion;
}
public TestConfig getConfig()
{
return config;
}
public void setConfig(TestConfig config)
{
this.config = config;
}
public Integer getCountdown()
{
Integer countdown = null;
if(Status.IN_PROGRESS.equals(this.status) && this.startedAt != null && this.eta != null)
{
LocalDateTime from = new LocalDateTime(this.startedAt.getTime());
LocalDateTime to = new LocalDateTime(Calendar.getInstance().getTime());
countdown = Math.max(0, this.eta - Seconds.secondsBetween(from, to).getSeconds());
}
return countdown;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy