Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions Dockerfile_debug
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
FROM eclipse-temurin:23
COPY /build/libs/healenium-backend-*.jar /healenium-backend.jar
CMD java -jar /healenium-backend.jar


LABEL maintainer="healenium"

ENV JAR=healenium-backend.jar
ENV EXECUTABLE=run.sh

WORKDIR /

COPY /build/libs/healenium-backend-*.jar /${JAR}
COPY run.sh /${EXECUTABLE}

RUN chmod +x /${EXECUTABLE}

EXPOSE 7878
EXPOSE 5005

CMD /${EXECUTABLE}
17 changes: 17 additions & 0 deletions run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/sh

DEFAULT_JAVA_OPTIONS="-XX:+UseG1GC -XX:MaxRAMPercentage=75"
DEBUG_OPTIONS=""

if [ -n "${JAVA_DEBUG_ENABLE:-}" ] || [ -n "${JAVA_DEBUG:-}" ]; then
debug_port="${JAVA_DEBUG_PORT:-5005}"
DEBUG_OPTIONS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:${debug_port}"
fi

echo -e "run.sh configuration:"
echo -e "\tDEFAULT_JAVA_OPTIONS: ${DEFAULT_JAVA_OPTIONS:-}"
echo -e "\tJAVA_OPTIONS: ${JAVA_OPTIONS:-}"
echo -e "\tDEBUG_OPTIONS: ${DEBUG_OPTIONS:-}"

java $DEFAULT_JAVA_OPTIONS $JAVA_OPTIONS $DEBUG_OPTIONS -jar /$JAR

Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.util.StringUtils;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.validation.FieldError;
import org.springframework.web.servlet.ModelAndView;

import javax.validation.Valid;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.IOUtils;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.io.FileInputStream;
import java.io.IOException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,25 @@

import com.epam.healenium.model.domain.HealingResult;
import com.epam.healenium.model.domain.Report;
import com.epam.healenium.model.dto.elitea.*;
import com.epam.healenium.model.dto.elitea.DedicatedInfo;
import com.epam.healenium.model.dto.elitea.LlmDto;
import com.epam.healenium.model.dto.elitea.LocatorPathsDto;
import com.epam.healenium.model.dto.elitea.VcsDto;
import com.epam.healenium.repository.ReportRepository;
import com.epam.healenium.service.IntegrationService;
import com.epam.healenium.service.ReportService;
import com.epam.healenium.service.SelectorService;
import com.epam.healenium.service.IntegrationService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
Expand Down
15 changes: 11 additions & 4 deletions src/main/java/com/epam/healenium/controller/ReportController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,21 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.time.LocalDateTime;
import java.util.Map;

import java.nio.file.Paths;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Slf4j
@RestController
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


import java.io.IOException;

@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


import java.io.IOException;

@Slf4j
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/epam/healenium/mapper/LocatorMapper.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package com.epam.healenium.mapper;

import java.util.Collection;
import java.util.Set;

import com.epam.healenium.model.Locator;
import org.mapstruct.IterableMapping;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
import org.openqa.selenium.By;

import java.util.Collection;
import java.util.Set;

@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface LocatorMapper {

Expand Down
15 changes: 13 additions & 2 deletions src/main/java/com/epam/healenium/model/domain/Healing.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
package com.epam.healenium.model.domain;

import jakarta.persistence.*;
import lombok.*;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.annotations.BatchSize;
import org.hibernate.annotations.CreationTimestamp;
Expand Down
13 changes: 12 additions & 1 deletion src/main/java/com/epam/healenium/model/domain/HealingResult.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
package com.epam.healenium.model.domain;

import com.epam.healenium.model.Locator;
import jakarta.persistence.*;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.SequenceGenerator;
import jakarta.persistence.Table;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/com/epam/healenium/model/domain/Report.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@

import com.epam.healenium.converter.RecordWrapperConverter;
import com.epam.healenium.model.wrapper.RecordWrapper;
import jakarta.persistence.*;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.persistence.Version;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.GenericGenerator;

import java.time.LocalDateTime;

Expand Down
9 changes: 8 additions & 1 deletion src/main/java/com/epam/healenium/model/domain/Selector.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,21 @@
import com.epam.healenium.converter.NodeConverter;
import com.epam.healenium.model.Locator;
import com.epam.healenium.model.wrapper.NodePathWrapper;
import jakarta.persistence.*;
import jakarta.persistence.Basic;
import jakarta.persistence.Column;
import jakarta.persistence.Convert;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.Data;
import lombok.ToString;
import lombok.experimental.Accessors;
import org.hibernate.annotations.ColumnTransformer;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.type.SqlTypes;

import java.time.LocalDateTime;

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package com.epam.healenium.service;

import com.epam.healenium.model.domain.Selector;
import com.epam.healenium.model.dto.*;
import com.epam.healenium.model.dto.ConfigSelectorDto;
import com.epam.healenium.model.dto.RecordDto;
import com.epam.healenium.model.dto.ReferenceElementsDto;
import com.epam.healenium.model.dto.RequestDto;
import com.epam.healenium.model.dto.SelectorDto;
import com.epam.healenium.model.dto.SelectorRequestDto;
import com.epam.healenium.model.dto.elitea.LocatorPathsDto;

import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,7 @@
import java.util.Set;
import java.util.stream.Collectors;

import static com.epam.healenium.constants.Constants.EMPTY_PROJECT;
import static com.epam.healenium.constants.Constants.HOST_PROJECT;
import static com.epam.healenium.constants.Constants.SESSION_KEY_V1;
import static com.epam.healenium.constants.Constants.SESSION_KEY_V2;
import static com.epam.healenium.constants.Constants.SUCCESSFUL_HEALING_BUCKET;
import static com.epam.healenium.constants.Constants.UNSUCCESSFUL_HEALING_BUCKET;
import static com.epam.healenium.constants.Constants.*;

@Slf4j
@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;

import java.util.*;
import java.util.Comparator;
import java.util.List;
import java.util.Optional;
import java.util.UUID;

@Slf4j
@Service
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.orm.ObjectOptimisticLockingFailureException;
import org.springframework.retry.annotation.Backoff;
import org.springframework.retry.annotation.Retryable;
import org.springframework.stereotype.Service;
import org.apache.commons.io.FileUtils;

import java.io.File;
import java.nio.file.Paths;
Expand Down Expand Up @@ -369,16 +369,15 @@ private ReportRecord createReportRecord(RecordWrapper.Record record) {
}

private void setDeclaringClass(ReportRecord reportRecord, RecordWrapper.Record record) {
String className = getClassNameFromSelector(record);
String classNameFromSelector = getClassNameFromSelector(record);

if ("HealeniumFindElementPostRequest".equals(className)) {
if ("HealeniumFindElementPostRequest".equals(classNameFromSelector)) {
reportRecord.setDeclaringClass(record.getFailedLocator().getValue());
return;
}
else if (className != null && !className.trim().isEmpty()) {
reportRecord.setDeclaringClass(className);
} else {
setDeclaringClassFromRecord(reportRecord, record);
}

String classNameFromRecord = getDeclaringClassFromRecord(record);
reportRecord.setDeclaringClass(classNameFromRecord);
}

private String getClassNameFromSelector(RecordWrapper.Record record) {
Expand All @@ -389,18 +388,12 @@ private String getClassNameFromSelector(RecordWrapper.Record record) {
.orElse(null);
}

private void setDeclaringClassFromRecord(ReportRecord reportRecord, RecordWrapper.Record record) {
private String getDeclaringClassFromRecord(RecordWrapper.Record record) {
String className = record.getClassName();
if (className != null) {
String[] path = className.split("\\.");
if (path.length > 0) {
reportRecord.setDeclaringClass(path[path.length - 1]);
} else {
reportRecord.setDeclaringClass(className);
}
} else {
reportRecord.setDeclaringClass("Not Set");
if (className == null) {
return "Not Set";
}
return className;
}

private void setCommonFields(ReportRecord reportRecord, RecordWrapper.Record record) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,12 @@
import com.epam.healenium.model.domain.HealingResult;
import com.epam.healenium.model.domain.Report;
import com.epam.healenium.model.domain.Selector;
import com.epam.healenium.model.dto.*;
import com.epam.healenium.model.dto.ConfigSelectorDto;
import com.epam.healenium.model.dto.RecordDto;
import com.epam.healenium.model.dto.ReferenceElementsDto;
import com.epam.healenium.model.dto.RequestDto;
import com.epam.healenium.model.dto.SelectorDto;
import com.epam.healenium.model.dto.SelectorRequestDto;
import com.epam.healenium.model.dto.elitea.LocatorPathsDto;
import com.epam.healenium.model.wrapper.RecordWrapper;
import com.epam.healenium.repository.HealingRepository;
Expand All @@ -21,7 +26,6 @@
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.util.Collections;
Expand Down
7 changes: 6 additions & 1 deletion src/main/java/com/epam/healenium/util/JpaTools.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package com.epam.healenium.util;

import jakarta.persistence.criteria.*;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Fetch;
import jakarta.persistence.criteria.From;
import jakarta.persistence.criteria.Join;
import jakarta.persistence.criteria.JoinType;
import jakarta.persistence.criteria.Root;
import jakarta.persistence.metamodel.SetAttribute;
import jakarta.persistence.metamodel.SingularAttribute;
import lombok.experimental.UtilityClass;
Expand Down
Loading
Loading