Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
195 commits
Select commit Hold shift + click to select a range
83d575d
PIC-5324: Newman - fixing WebSocket issue, UI updated
oleksiiv-gigas Apr 9, 2025
3e1dc49
PIC-5667: Massive code refactoring due to switching to the Postgres flow
oleksiiv-gigas May 5, 2025
95dc632
PIC-5667: newman-submitter-loop.sh revert
oleksiiv-gigas May 8, 2025
1fc0001
PIC-5667: Fixed several issues related to wrong usage of repository f…
oleksiiv-gigas May 8, 2025
10c9f04
PIC-5667: Build fields serialization/deserialization fix
oleksiiv-gigas May 20, 2025
11f0064
PIC-5667: dependency update
oleksiiv-gigas May 21, 2025
9a7b2e5
PIC-5667: newman-server.sh removed unnecessary things from the script
oleksiiv-gigas May 21, 2025
3a4964b
PIC-5667: accidental file change revert
oleksiiv-gigas May 26, 2025
97f7524
Add scaffolding for onprem submitter
denomolo May 27, 2025
3164660
Merge remote-tracking branch 'refs/remotes/origin/PIC-5667-postgres-m…
denomolo May 27, 2025
202c510
Create slightly updated submitter script
denomolo May 29, 2025
805989c
Cleanup new sumitter script for readability
denomolo May 29, 2025
1950ad7
PIC-5667: Test status update fixed
oleksiiv-gigas May 29, 2025
89aa554
PIC-5667: ui replaced with fixes and non-minified
oleksiiv-gigas May 29, 2025
c5a229c
PIC-5667: Job picking up improvements
oleksiiv-gigas May 29, 2025
ced235a
PIC-5667: Agent finish job logic fix
oleksiiv-gigas May 29, 2025
6812323
PIC-5667: concurrent job picking up improved by extending synchronize…
oleksiiv-gigas May 30, 2025
4dfc5c3
PIC-5667: ui updated
oleksiiv-gigas May 30, 2025
6e4ed47
PIC-5667: findJob() query fixed, loggers updated
oleksiiv-gigas May 30, 2025
e7e2201
PIC-5667: cyclic-dependency resolution for the websocket broadcasting
oleksiiv-gigas May 30, 2025
8d7bb4a
PIC-5667: fixing logs file path
oleksiiv-gigas May 30, 2025
ba372fc
PIC-5667: Test and BuildStatusSuite entites fixes
oleksiiv-gigas May 30, 2025
cdd4e07
PIC-5667: 'subscribe' operation synchronized lock added to organize p…
oleksiiv-gigas May 30, 2025
7def6e0
PIC-5667: Test & TestLog entity improvement
oleksiiv-gigas May 31, 2025
7f182c1
PIC-5667: More entities improvements and fixes
oleksiiv-gigas May 31, 2025
546340d
PIC-5667: toString() fix for Test entity
oleksiiv-gigas Jun 3, 2025
807afed
PIC-5667: toString() fix for Test entity
oleksiiv-gigas Jun 3, 2025
ebccf71
PIC-5667: toString() fix for Test entity
oleksiiv-gigas Jun 3, 2025
09e297c
PIC-5667: fix cyclic dependencies and @transactional calls
oleksiiv-gigas Jun 3, 2025
fafaada
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 3, 2025
4bd34ba
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 3, 2025
6b46fde
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 3, 2025
d49fb1e
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 4, 2025
3608733
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 4, 2025
cfd30ce
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 4, 2025
f46deb2
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 4, 2025
7d5289e
Revert "PIC-5667: fix cyclic dependencies"
oleksiiv-gigas Jun 4, 2025
bedf29f
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 4, 2025
72ba46a
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 5, 2025
c1cd752
PIC-5667: fix cyclic dependencies
oleksiiv-gigas Jun 5, 2025
ec88f14
PIC-5667: NIGHTLY build with tags search fix
oleksiiv-gigas Jun 6, 2025
6e1b65b
PIC-5667: Test and Agents behavior update when returnTests
oleksiiv-gigas Jun 6, 2025
7317aed
PIC-5667: Job JPA Specification updated, getting correct highestPrior…
oleksiiv-gigas Jun 6, 2025
fc275f2
PIC-5667: fix PAUSED test recognition by an agent
oleksiiv-gigas Jun 6, 2025
55a9ebf
PIC-5667: build version API to display in UI
oleksiiv-gigas Jun 11, 2025
a0dbeff
PIC-5667: Revert few files
oleksiiv-gigas Jun 11, 2025
063b5dd
PIC-5667: Revert files
oleksiiv-gigas Jun 11, 2025
7a20e0c
Create GH Action to build newman
denomolo Jun 14, 2025
61817f4
Create individual packages
denomolo Jun 14, 2025
4a9858a
Upload checksum separately
denomolo Jun 14, 2025
fb4906b
PIC-5667: UI replacement with newer version
oleksiiv-gigas Jun 26, 2025
b0006ea
metadata appending functionality fixed
oleksiiv-gigas Jul 29, 2025
b7caaf8
resources appending functionality fixed
oleksiiv-gigas Jul 30, 2025
c2e3090
PIC-5667: UI replacement with newer version
oleksiiv-gigas Aug 6, 2025
0ba9a93
PIC-5667: UI replacement with newer version
oleksiiv-gigas Aug 7, 2025
39ad6a9
createJob() and createFutureJobs() are now synchronized
oleksiiv-gigas Aug 11, 2025
342ad76
smart lock for jobs to avoid changing counter from multiple places
oleksiiv-gigas Aug 12, 2025
9ba25c3
reduce synchronized for finishTest()
oleksiiv-gigas Aug 12, 2025
6235b3e
synchronized rollback
oleksiiv-gigas Aug 12, 2025
f41f327
fixing synchronized issue
oleksiiv-gigas Aug 12, 2025
52ed5f6
fixing synchronized issue
oleksiiv-gigas Aug 13, 2025
536c28f
Repos save() replaced with saveAndFlush()
oleksiiv-gigas Aug 13, 2025
b9852e6
fixing synchronization issues
oleksiiv-gigas Aug 13, 2025
e0d570c
fixing synchronization issues
oleksiiv-gigas Aug 13, 2025
0d6a97c
fixing synchronization issues
oleksiiv-gigas Aug 13, 2025
a9a0a03
fixing synchronization issues, prioritized jobs fixed
oleksiiv-gigas Aug 14, 2025
c635a1d
UI updated
oleksiiv-gigas Aug 14, 2025
5530094
fixing synchronization issues
oleksiiv-gigas Aug 14, 2025
a560670
fix - immediately picking a job with a higher priority when all agent…
oleksiiv-gigas Aug 14, 2025
12d0cc2
fix - picking job adjustments
oleksiiv-gigas Aug 14, 2025
cebda0a
fix - updateJobToReadyIfNoTestsRunning
oleksiiv-gigas Aug 14, 2025
1a4b4af
fixing synchronization issues
oleksiiv-gigas Aug 15, 2025
190d637
AtomicUpdater added to work with counters
oleksiiv-gigas Aug 15, 2025
e072c2c
AtomicUpdater logic update
oleksiiv-gigas Aug 16, 2025
1c97e10
AtomicUpdater transaction issue fix
oleksiiv-gigas Aug 16, 2025
eb4564c
AtomicUpdater - state RUNNING wrong enum was used
oleksiiv-gigas Aug 16, 2025
2e3e7c3
AtomicUpdater - last job.setRunning converted to atomic call
oleksiiv-gigas Aug 18, 2025
60c87fd
AtomicUpdater - job.setRunning adding whereId() clause
oleksiiv-gigas Aug 18, 2025
d367979
fix - pessimistic lock when Test read to avoid reading from cache
oleksiiv-gigas Aug 18, 2025
43c2e9d
fix - transaction added for pessimistic lock
oleksiiv-gigas Aug 19, 2025
3e41ddf
fix - more synchronization efforts
oleksiiv-gigas Aug 19, 2025
3bdfe1e
More places to use AtomicUpdater
oleksiiv-gigas Aug 19, 2025
88cab5a
handleUnseenAgent reduced to 1 min interval
oleksiiv-gigas Aug 20, 2025
43964ee
fix - job atomic field name isPaused
oleksiiv-gigas Aug 20, 2025
62cd45c
handleUnseenAgent increased to 5 mins
oleksiiv-gigas Aug 20, 2025
874e84d
finishTest full method synchronized
oleksiiv-gigas Aug 20, 2025
967fddf
finishTest - remove synchronized
oleksiiv-gigas Aug 20, 2025
5171571
getTest() synchronize block narrowed
oleksiiv-gigas Aug 20, 2025
8fe8ab4
getTest() revert test update when job is Paused
oleksiiv-gigas Aug 20, 2025
50b2c18
adding logs
oleksiiv-gigas Aug 20, 2025
295037f
AtomicUpdater refactoring to send native SQL for inc() and dec() func…
oleksiiv-gigas Aug 20, 2025
16c9d0b
NewmanResource refactoring to send native SQL updates for entities
oleksiiv-gigas Aug 21, 2025
2bcfb96
AtomicUpdater java.util.Date conversion to match with native SQL type
oleksiiv-gigas Aug 21, 2025
d07f47f
AtomicUpdater enum conversion to match with native SQL type
oleksiiv-gigas Aug 21, 2025
788996d
AtomicUpdater - pessimistic lock on counters
oleksiiv-gigas Aug 21, 2025
3f11f75
AtomicUpdater - fix wrong query param ref
oleksiiv-gigas Aug 21, 2025
fefebf8
AtomicUpdater - fix wrong query param ref
oleksiiv-gigas Aug 21, 2025
4defc22
AtomicUpdater - another way of locking the row
oleksiiv-gigas Aug 21, 2025
594494a
AtomicUpdater - odd line remove
oleksiiv-gigas Aug 21, 2025
ee02242
AtomicUpdater - more logs
oleksiiv-gigas Aug 21, 2025
dbe22f9
AtomicUpdater - more updates
oleksiiv-gigas Aug 21, 2025
217e02f
AtomicUpdater - testing
oleksiiv-gigas Aug 21, 2025
18c2387
AtomicUpdater - add and remove functionality added for collections
oleksiiv-gigas Aug 21, 2025
659a7c6
AtomicUpdater - add and remove functionality added for collections
oleksiiv-gigas Aug 21, 2025
96317ef
AtomicUpdater - more atomic usage
oleksiiv-gigas Aug 21, 2025
6af8776
NewmanResource - temporarily removed handleJobSetupLogFile
oleksiiv-gigas Aug 21, 2025
057781e
AtomicUpdater - proper atomic update of agent setup logs
oleksiiv-gigas Aug 21, 2025
35b1b83
AtomicUpdater - fixes
oleksiiv-gigas Aug 22, 2025
c9c60d5
AtomicUpdater - indexes fixed
oleksiiv-gigas Aug 22, 2025
86944d7
JobSetupLog - schema name 'job_setup_logs' renamed to 'job_setup_log'
oleksiiv-gigas Aug 22, 2025
919d285
AtomicUpdater - clever NULLing for fields
oleksiiv-gigas Aug 22, 2025
2dfe7a1
UI updated
oleksiiv-gigas Aug 23, 2025
22f67e7
AtomicUpdater - more usage of it to update Job
oleksiiv-gigas Aug 26, 2025
85e473c
AtomicUpdater - field name fix
oleksiiv-gigas Aug 26, 2025
c2fe5ce
AtomicUpdater - Set<Object> conversion logic
oleksiiv-gigas Aug 26, 2025
b62a0aa
Agent - the downloadable links are now proxied if set
oleksiiv-gigas Aug 28, 2025
0a2307b
Agent - proxy logging
oleksiiv-gigas Aug 28, 2025
dc8a51c
Agent - env var RESOURCES_PROXY_URL changed to system properties
oleksiiv-gigas Aug 28, 2025
0b65c3c
Agent - origPath.getPath() -> origPath.toString()
oleksiiv-gigas Aug 28, 2025
80ca6cc
UI updated to a newer version
oleksiiv-gigas Aug 29, 2025
d5857ad
tests-logs folder path is now configurable via SystemProperties
oleksiiv-gigas Sep 2, 2025
35f67af
tests-logs are not getting saved in separate thread to prevent blocki…
oleksiiv-gigas Sep 8, 2025
58b70be
tests-logs multithreading save files improvement
oleksiiv-gigas Sep 8, 2025
f06cfd4
tests-logs temp file creation before pushing to s3
oleksiiv-gigas Sep 8, 2025
743810e
tests-logs debug logs
oleksiiv-gigas Sep 8, 2025
c415446
tests-logs fixing temp files path
oleksiiv-gigas Sep 8, 2025
864d927
tests-logs fixing temp files saving
oleksiiv-gigas Sep 9, 2025
854b121
tests-logs fixing temp files saving
oleksiiv-gigas Sep 9, 2025
64fac7d
tests-logs - speed up copying temp files to s3
oleksiiv-gigas Sep 9, 2025
7dcb20b
Agents amount necessity calculation based on workers count
oleksiiv-gigas Sep 11, 2025
5b48912
Suite now has separate field 'workersAllowed' to use it for agents co…
oleksiiv-gigas Sep 12, 2025
7b7f45b
Remove null fields from Suite criteria
oleksiiv-gigas Sep 12, 2025
55d35d1
Suite now has separate field 'workersAllowed' to use it for agents co…
oleksiiv-gigas Sep 12, 2025
5f02837
WorkersAllowed removed from Job definition
oleksiiv-gigas Sep 12, 2025
a942f54
UI updated to a newer version
oleksiiv-gigas Sep 12, 2025
ccf3463
UI updated to a newer version; NIGHTLY builds comparison and crons us…
oleksiiv-gigas Sep 15, 2025
884a81a
Newman Submitter - remove quotes if any when use cron parser
oleksiiv-gigas Sep 16, 2025
2122fac
UI updated to a newer version
oleksiiv-gigas Sep 16, 2025
19cae54
Do not update LAST_NIGHTLY_RUN date in case build was not submitted w…
oleksiiv-gigas Sep 16, 2025
61b0b44
submitter NIGHTLY time shifted to start between 21:00 and 24:00
oleksiiv-gigas Sep 16, 2025
6155516
UI updated to a newer version
oleksiiv-gigas Sep 16, 2025
da9baff
UI updated to a newer version
oleksiiv-gigas Sep 16, 2025
5e421b0
UI updated to a newer version
oleksiiv-gigas Sep 17, 2025
8c7b7ef
New agents calculation formula
oleksiiv-gigas Sep 18, 2025
897d1d8
Field typo fix failed3Tests -> failed3TimesTests
oleksiiv-gigas Sep 18, 2025
5086f10
Rollback agents count formula to original one
oleksiiv-gigas Sep 18, 2025
7767e46
- Handle unseen agents interval time reduced 30 min -> 5 min;
oleksiiv-gigas Oct 9, 2025
1dd0355
Concurrent Job deletion handling to prevent exception breaking the flow
oleksiiv-gigas Oct 10, 2025
22ea062
Eliminate possible race conditions when updating Job counters
oleksiiv-gigas Oct 10, 2025
f8c0562
timer tasks wrapped with try-catch to prevent them get canceled in ca…
oleksiiv-gigas Oct 10, 2025
b255a45
UI updated to a newer version
oleksiiv-gigas Oct 11, 2025
b822639
UI updated to a newer version
oleksiiv-gigas Oct 14, 2025
ee83528
UI updated to a newer version
oleksiiv-gigas Oct 14, 2025
9553d57
UI updated to a newer version
oleksiiv-gigas Oct 15, 2025
41beae5
UI updated to a newer version; BuildDTO fixed missing field
oleksiiv-gigas Oct 16, 2025
d868b35
Enhance finishTest() method to prevent race conditions by adding atom…
oleksiiv-gigas Oct 16, 2025
2887337
UI updated to a newer version
oleksiiv-gigas Oct 16, 2025
05659cc
Refactor Job and PJobDTO to use denormalized Suite fields for improve…
oleksiiv-gigas Oct 18, 2025
0277952
Refactor PJobDTO and Job to improve Suite relationship handling; add …
oleksiiv-gigas Oct 18, 2025
271b5d5
Fix Job instantiation in NewmanResource to use suite name instead of …
oleksiiv-gigas Oct 20, 2025
24bc27c
Effort to decouple Suite from Job
oleksiiv-gigas Oct 20, 2025
1c8ecef
Effort to decouple Suite from Job
oleksiiv-gigas Oct 20, 2025
4adce27
Revert all decoupling efforts
oleksiiv-gigas Oct 21, 2025
981b9d3
Enhance logging in NewmanResource for test and job state transitions;…
oleksiiv-gigas Oct 29, 2025
cb043a9
Revert "Enhance logging in NewmanResource for test and job state tran…
oleksiiv-gigas Oct 29, 2025
a4c669d
Revert "Enhance finishTest() method to prevent race conditions by add…
oleksiiv-gigas Oct 29, 2025
a862df8
Update UI (JDK configuration screen was added)
oleksiiv-gigas Oct 30, 2025
8d769b0
New JDK 21 support added
oleksiiv-gigas Oct 30, 2025
e214869
Enhance finishTest() method to prevent double decrement by checking t…
oleksiiv-gigas Nov 3, 2025
7396224
Add isDefault field to JobConfig for configuration management
oleksiiv-gigas Nov 3, 2025
60c9837
Update UI
oleksiiv-gigas Nov 3, 2025
0739e64
Add endpoint to set JobConfig as default and unset previous defaults
oleksiiv-gigas Nov 3, 2025
212c676
Update UI
oleksiiv-gigas Nov 3, 2025
affcf4c
Set weak relations between Job and Suite so Suite can be deleted anyt…
oleksiiv-gigas Nov 5, 2025
121bcd4
Update UI
oleksiiv-gigas Nov 6, 2025
011950a
Handle temporary file creation conditionally based on upload location…
oleksiiv-gigas Dec 8, 2025
05c0d29
Revert "Handle temporary file creation conditionally based on upload …
oleksiiv-gigas Dec 8, 2025
5d7ccd0
Update UI
oleksiiv-gigas Dec 10, 2025
f61bf2a
Update UI
oleksiiv-gigas Dec 16, 2025
5a959f0
Fix typo in job toggle methods and streamline job PAUSE/RESUME state …
oleksiiv-gigas Dec 16, 2025
3a65d48
Add date filtering to job retrieval and update UI components
oleksiiv-gigas Jan 2, 2026
a7d5f74
Update UI
oleksiiv-gigas Jan 5, 2026
ba1ce44
Update UI
oleksiiv-gigas Jan 6, 2026
2875204
Update UI
oleksiiv-gigas Jan 8, 2026
532fa6e
Add scheduled JDK configuration switch depending on day of week for N…
oleksiiv-gigas Jan 13, 2026
bf9e438
fix: issue with selecting the only build to append when build name do…
oleksiiv-gigas Jan 26, 2026
ceafc42
fix: add timeout protection for job setup to prevent agent hang
oleksiiv-gigas Feb 2, 2026
2e73909
feat: add public key export functionality and SSH command execution e…
oleksiiv-gigas Feb 3, 2026
c59b485
Update UI; separate SSHUtils organising for SSH operations
oleksiiv-gigas Feb 4, 2026
fd28d8e
feat: implement cascading delete for Job and Test entities in reposit…
oleksiiv-gigas Feb 5, 2026
6583e3d
feat: enhance multiple job deletion process with immediate updates an…
oleksiiv-gigas Feb 5, 2026
e6f4910
fix: handle IllegalStateException during build status update in case …
oleksiiv-gigas Feb 5, 2026
b00cca7
feat: optimize log directory size calculation with caching and async …
oleksiiv-gigas Feb 6, 2026
5707567
feat: improve log directory size calculation using 'du' command for b…
oleksiiv-gigas Feb 6, 2026
adab2b4
feat: enhance log size calculation with improved logging and async pr…
oleksiiv-gigas Feb 6, 2026
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
65 changes: 65 additions & 0 deletions .github/workflows/newman-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Build newman and publish artifacts

on:
push:
branches: [ PIC-5667-postgres-migration ]
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest

steps:
- name: Set up Java 8
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '8'

- name: Install Maven 3.6.3
uses: stCarolas/setup-maven@v4
with:
maven-version: 3.6.3

- name: Checkout code
uses: actions/checkout@v4

- name: Build all modules
run: mvn clean package

- name: Install GitHub CLI
run: |
sudo apt update
sudo apt install -y gh

- name: Zip all target directories
run: |
mkdir -p build-zips
for dir in */target; do
parent=$(dirname "$dir")
zipfile="build-zips/${parent}.zip"
echo "Zipping $dir -> $zipfile"
(cd "$dir" && zip -r "../../$zipfile" .)
done

- name: Generate checksums
run: |
cd build-zips
sha256sum *.zip > checksums.sha256
cat checksums.sha256

- name: Create or update GitHub Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
VERSION=$(mvn help:evaluate -Dexpression=project.version -q -DforceStdout)

# Create release if not exists
gh release view "v$VERSION" >/dev/null 2>&1 || \
gh release create "v$VERSION" --title "v$VERSION" --notes "SHA256 checksums below:"

# Upload all files including checksums
for file in build-zips/*.zip build-zips/checksums.sha256; do
echo "Uploading $file"
gh release upload "v$VERSION" "$file" --clobber
done
12 changes: 7 additions & 5 deletions docker/Dockerfile → docker/_Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ ARG gid=1001
RUN apt-get update -y
RUN apt-get install coreutils wget -y

ENV MAVEN_VERSION 3.6.3
ENV MAVEN_FILE apache-maven-${MAVEN_VERSION}-bin.tar.gz
ENV NODE_VERSION 22.11.0
ENV NODE_FILE node-v${NODE_VERSION}-linux-x64.tar.gz
ENV MAVEN_VERSION=3.6.3
ENV MAVEN_FILE=apache-maven-${MAVEN_VERSION}-bin.tar.gz
ENV NODE_VERSION=22.11.0
ENV NODE_FILE=node-v${NODE_VERSION}-linux-x64.tar.gz

# Jenkins is run with user `newman`, uid = 1000
# If you bind mount a volume from the host or a data container,
Expand All @@ -21,7 +21,7 @@ RUN groupadd -g ${gid} ${group} \

# Install Java.
RUN apt-get install openjdk-8-jdk -y
ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/

# Install Maven
RUN wget --no-verbose -O /tmp/${MAVEN_FILE} \
Expand Down Expand Up @@ -66,3 +66,5 @@ USER root
RUN apt-get install sudo curl -y netbase

USER ${user}

CMD ["sh", "/newman/bin/newman-server.sh"]
32 changes: 32 additions & 0 deletions docker/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
version: "3.8"

services:
newman-server:
image: newman-server:1.0
container_name: newman-server
ports:
- "8080:8080"
- "8443:8443"
volumes:
- /home/newman/server:/newman
entrypoint: ["/newman/bin/newman-server.sh"]
networks:
- newman-network

newman-postgres:
image: postgres
container_name: newman-postgres
ports:
- "5432:5432"
environment:
POSTGRES_DB: newman-db
POSTGRES_USER: admin
POSTGRES_PASSWORD: password
volumes:
- /home/newman/postgres_data:/var/lib/postgresql/data
networks:
- newman-network

networks:
newman-network:
driver: bridge
1 change: 1 addition & 0 deletions files/branch_list.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
master
39 changes: 39 additions & 0 deletions files/newman-submitter-loop.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#!/usr/bin/env bash
while true; do
source submitter-env.sh

# take branches from file
branch_list=`cat ${BRANCH_FILE_PATH}`
IFS=',' read -a branch_array <<< "${branch_list}"
echo "starting loop over branches ..."

# loop over all branches
for branch in "${branch_array[@]}"
do
echo "Start submitting XAP jobs. Date is [`date`]"
# current hour
HOURS=$(date +%H)

if [ $HOURS -ge 20 -a $HOURS -le 23 ]; then
echo "running in nightly mode, will trigger new jobs even if no changes where made, date is `date`"
export NEWMAN_MODE="NIGHTLY"
export NEWMAN_BUILD_TAGS="XAP,DOTNET"
else
echo "running in daily mode, will trigger new jobs only if changes in build were made, date is `date`"
export NEWMAN_MODE="DAILY"
export NEWMAN_BUILD_TAGS="XAP"
fi

export NEWMAN_BUILD_BRANCH=${branch}

echo "NEWMAN_BUILD_BRANCH=${NEWMAN_BUILD_BRANCH}"
echo "NEWMAN_BUILD_TAGS=${NEWMAN_BUILD_TAGS}"
echo "NEWMAN_MODE=${NEWMAN_MODE}"

#checking future job
java -jar newman-submitter-2.0.jar
HAS_FUTURE_JOBS=$?
echo "FINISHED SUBMIT LOOP!! [HAS_FUTURE_JOBS=${HAS_FUTURE_JOBS}]. Date is [`date`]"
sleep 60
done
done
41 changes: 41 additions & 0 deletions files/submitter-env.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[main]
DISCONNECT = 59f25af5b3859424cac590ad
MANAGER = 5c88ea4bb38594355214b205
XAP_CORE = 59f25d19b3859424cac590bf
OFF_HEAP = 59f25d5bb3859424cac590c2
ROCKS_DB = 59f25d5ab3859424cac590c1
JETTY9 = 59f25af6b3859424cac590b1
WAN = 59f25af7b3859424cac590b9
I9E_SGTEST = 59f59592b3859424cac690fa
MONGO_DB = 59f25af7b3859424cac590b4
ESM_SECURITY = 59f25af7b3859424cac590b7
SERVICE_GRID = 59f25af7b3859424cac590b5
SECURITY = 59f25af7b3859424cac590b8
ESM = 59f25af7b3859424cac590b6
DOTNET = 59f25af6b3859424cac590ae
WEB_UI = 59f25e0f6d98c14e1daa2008
MANAGER_SECURITY = 58907cbb29f67f0c0af7eee1
INSIGHTEDGE_PREMIUM = 59f25af6b3859424cac590b0
MX_OFF_HEAP = 5a96b14268c479caafb1162f
MX_PMEM = 5be44547b385947afe427786
FOOTPRINT = 5b1ce25cb385946642f31fac
I9E_SGTEST_CLI = 5b4c8771b38594390d56cccf
DEMOTE = 5b6c24e7b385941b3b8ce4bf
DEMOTE_ROCKSDB = 5b82bae131f99308478e101b
AX_SPARK = 5d2b2d1c4cedfd000ca050d8
K8S_I9E = 5c88efc7b38594355214b36b
K8S_XAP = 5c88efb2b38594355214b36a
OPS_UI = 5ef32df04cedfd00099271ae
OPS_UI_SECURED = 5ef327854cedfd000992719e
ELASTICGRID = 5f9fe92cf10dba603d82bb9e
PERFORMANCE = 59f25e0f6d98c14e1daa5000
TIERED_STORAGE_COLD_ONLY = 61dae61c4cedfd000c4bf3b2
DAILY_SUITES_LIST = ${XAP_CORE},${SERVICE_GRID},${MANAGER},${ROCKS_DB},${OFF_HEAP},${DISCONNECT},${ESM_SECURITY},${WAN},${MONGO_DB},${ESM},${SECURITY},${JETTY9},${WEB_UI},${MANAGER_SECURITY},${MX_OFF_HEAP},${FOOTPRINT},${DEMOTE},${OPS_UI},${OPS_UI_SECURED},${TIERED_STORAGE_COLD_ONLY}
NIGHTLY_SUITES_LIST = ${XAP_CORE},${SERVICE_GRID},${MANAGER},${ROCKS_DB},${DISCONNECT},${WAN},${MONGO_DB},${SECURITY},${JETTY9},${WEB_UI},${MANAGER_SECURITY},${MX_OFF_HEAP},${OFF_HEAP},${FOOTPRINT},${DEMOTE},${DEMOTE_ROCKSDB},${OPS_UI},${OPS_UI_SECURED},${PERFORMANCE},${K8S_XAP},${TIERED_STORAGE_COLD_ONLY},${DOTNET}
LAST_DAILY_SUITE = 5f9fe92cf10dba603d82bb9e
LAST_NIGHTLY_RUN = 2025/05/27
JOB_CONFIG_DEFAULT = OPENJDK_17
JOB_CONFIG_SCHEDULED = {"5":"OPENJDK_21"}
AGENT_GROUPS_DEFAULT = onprem,onprem-dotnet
DAILY_JOB_PRIORITY_DEFAULT = 0
NIGHTLY_JOB_PRIORITY_DEFAULT = 3
38 changes: 38 additions & 0 deletions files/submitter.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/usr/bin/env bash
source submitter-env.sh

# take branches from file
branch_list=`cat ${BRANCH_FILE_PATH}`
IFS=',' read -a branch_array <<< "${branch_list}"
echo "starting loop over branches ..."

# loop over all branches
for branch in "${branch_array[@]}"
do
echo "Start submitting XAP jobs. Date is [`date`]"
# current hour
HOURS=$(date +%H)

# check if nightly or daily mode - every branch
# if [ $HOURS -ge 20 -a $HOURS -le 23 ]; then
if [ $HOURS -ge 20 -a $HOURS -le 23 ]; then
echo "running in nightly mode, will trigger new jobs even if no changes where made, date is `date`"
export NEWMAN_MODE="NIGHTLY"
export NEWMAN_BUILD_TAGS="XAP,DOTNET"
else
echo "running in daily mode, will trigger new jobs only if changes in build were made, date is `date`"
export NEWMAN_MODE="DAILY"
export NEWMAN_BUILD_TAGS="XAP"
fi

export NEWMAN_BUILD_BRANCH=${branch}

echo "NEWMAN_BUILD_BRANCH=${NEWMAN_BUILD_BRANCH}"
echo "NEWMAN_BUILD_TAGS=${NEWMAN_BUILD_TAGS}"
echo "NEWMAN_MODE=${NEWMAN_MODE}"

#checking future job
java -jar newman-submitter-2.0.jar
HAS_FUTURE_JOBS=$?
echo "FINISHED SUBMIT LOOP!! [HAS_FUTURE_JOBS=${HAS_FUTURE_JOBS}]. Date is [`date`]"
done
39 changes: 34 additions & 5 deletions newman-agent/src/main/java/com/gigaspaces/newman/JobExecutor.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.gigaspaces.newman;

import com.gigaspaces.newman.beans.Job;
import com.gigaspaces.newman.beans.Suite;
import com.gigaspaces.newman.beans.Test;
import com.gigaspaces.newman.entities.Job;
import com.gigaspaces.newman.entities.Suite;
import com.gigaspaces.newman.entities.Test;
import com.gigaspaces.newman.utils.FileUtils;
import com.gigaspaces.newman.utils.ProcessResult;
import com.gigaspaces.newman.utils.ProcessUtils;
Expand All @@ -12,11 +12,13 @@
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;

import static com.gigaspaces.newman.utils.FileUtils.*;
import static com.gigaspaces.newman.utils.StringUtils.getNonEmptySystemProperty;

public class JobExecutor {
private static final Logger logger = LoggerFactory.getLogger(JobExecutor.class);
Expand All @@ -25,6 +27,7 @@ public class JobExecutor {
private final Job job;
private final Path jobFolder;
private final Path newmanLogFolder;
private final String proxy = getNonEmptySystemProperty("resources.proxy.url", null);

public JobExecutor(Job job, String basePath) {
this.job = job;
Expand All @@ -50,8 +53,9 @@ public boolean setup() {
logger.info("Downloading {} resources into {}...", job.getBuild().getResources().size(), resourcesFolder);
validateUris(job.getBuild().getResources());
for (URI resource : job.getBuild().getResources()) {
logger.info("Downloading {}...", resource);
download(resource.toURL(), resourcesFolder);
URI proxiedResource = wrapWithProxy(resource);
logger.info("Downloading {}...", proxiedResource);
download(proxiedResource.toURL(), resourcesFolder);
}

logger.info("Extracting Newman Artifacts...");
Expand Down Expand Up @@ -88,6 +92,24 @@ public boolean setup() {
}
}

private URI wrapWithProxy(URI origPath) {
if (proxy == null) {
logger.info("No proxy has been found");
return origPath;
}

logger.info("Using proxy - {}", proxy);
String origPathStr = proxy.split(":")[0];
String proxyPathStr = proxy.split(":")[1];

try {
return new URI(origPath.toString().replace(origPathStr, proxyPathStr));
} catch (URISyntaxException e) {
logger.error("Failed to wrap proxy URI {} with {}: {}", origPathStr, proxyPathStr, e);
return origPath;
}
}

private long overrideSetupTimeoutIfRequested() {
Map<String, String> customVariablesFromSuite = getCustomVariablesFromSuite();
String customTimeout = customVariablesFromSuite.get(Suite.CUSTOM_SETUP_TIMEOUT);
Expand Down Expand Up @@ -178,9 +200,16 @@ private Collection<String> wrapUniqueArgsWithQuotes(List<String> arguments) {
}

private void teardownTest(Test test) {
logger.info("Tearing down test {}", test.getName());

Path testFolder = append(jobFolder, "test-" + test.getId());
Path outputFile = append(append(testFolder, "output"), "end-" + test.getTestType() + ".log");
Path teardownScript = append(jobFolder, "end-" + test.getTestType() + SCRIPT_SUFFIX);

logger.info("testFolder path: {}", testFolder);
logger.info("outputFile path: {}", outputFile);
logger.info("teardownScript path: {}", teardownScript);

if (exists(teardownScript)) {
logger.info("Executing teardown for test {}", test);
try {
Expand Down
Loading