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
23 changes: 23 additions & 0 deletions .github/workflows/coverage-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Coverage CI

on:
push:
pull_request:

jobs:
coverage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-java@v4
with:
distribution: oracle
java-version: "25"
cache: maven

- name: Install test-data tools
run: sudo apt-get update && sudo apt-get install -y wget zstd

- name: Check coverage
run: mvn -pl estore clean test jacoco:report jacoco:check
2 changes: 1 addition & 1 deletion .github/workflows/formatting-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ jobs:

- uses: actions/setup-java@v4
with:
distribution: temurin
distribution: oracle
java-version: "25"
cache: maven

Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/test-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,20 @@ jobs:

- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: "8"
distribution: oracle
java-version: "25"
cache: maven

- name: Install test-data tools
run: sudo apt-get update && sudo apt-get install -y wget zstd

- name: Build and test estore
run: mvn -pl estore clean test -Dmaven.compiler.release=8
run: mvn -pl estore clean test jacoco:report

- name: Upload JaCoCo report
if: always()
uses: actions/upload-artifact@v4
with:
name: jacoco-report
path: estore/target/site/jacoco/
if-no-files-found: ignore
17 changes: 15 additions & 2 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,24 @@
FROM ubuntu:24.04

ENV DEBIAN_FRONTEND=noninteractive
ENV JAVA_HOME=/usr/java/jdk-25
ENV PATH="${JAVA_HOME}/bin:${PATH}"

# Java 8 first. Installing maven in the same apt command pulls OpenJDK 11.
# Oracle JDK 25 first so apt maven does not become the default java.
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
openjdk-8-jdk wget zstd netcat-openbsd \
ca-certificates wget zstd netcat-openbsd \
&& ARCH="$(dpkg --print-architecture)" \
&& case "$ARCH" in \
amd64) JDK_ARCH=x64 ;; \
arm64) JDK_ARCH=aarch64 ;; \
*) echo "unsupported arch: $ARCH" && exit 1 ;; \
esac \
&& wget -q "https://download.oracle.com/java/25/latest/jdk-25_linux-${JDK_ARCH}_bin.tar.gz" -O /tmp/jdk.tgz \
&& echo "$(wget -qO- "https://download.oracle.com/java/25/latest/jdk-25_linux-${JDK_ARCH}_bin.tar.gz.sha256") */tmp/jdk.tgz" | sha256sum -c \
&& mkdir -p "$JAVA_HOME" \
&& tar --extract --file /tmp/jdk.tgz --directory "$JAVA_HOME" --strip-components 1 \
&& rm /tmp/jdk.tgz \
&& apt-get install -y --no-install-recommends maven \
&& rm -rf /var/lib/apt/lists/*

Expand Down
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# In-memory Object Graph Stores

[![Test CI](https://github.com/EngineeringSoftware/eStore/actions/workflows/test-ci.yml/badge.svg)](https://github.com/EngineeringSoftware/eStore/actions/workflows/test-ci.yml)
[![Formatting CI](https://github.com/EngineeringSoftware/eStore/actions/workflows/formatting-ci.yml/badge.svg)](https://github.com/EngineeringSoftware/eStore/actions/workflows/formatting-ci.yml)
[![Coverage CI](https://github.com/EngineeringSoftware/eStore/actions/workflows/coverage-ci.yml/badge.svg)](https://github.com/EngineeringSoftware/eStore/actions/workflows/coverage-ci.yml)

<img src="images/estore_logo.png" width="400" />

Implementation of an in-memory object graph store, dubbed ϵStore. Our
Expand Down
3 changes: 2 additions & 1 deletion estore-maven-plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>8</maven.compiler.release>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<maven.version>3.9.14</maven.version>
</properties>

Expand Down
29 changes: 27 additions & 2 deletions estore/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
<name>estore</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.release>8</maven.compiler.release>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<test.jvm.add.opens></test.jvm.add.opens>
</properties>

Expand Down Expand Up @@ -118,7 +119,24 @@
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.13</version>
<version>0.8.14</version>
<configuration>
<excludes>
<exclude>org/estore/antlr4/**</exclude>
</excludes>
<rules>
<rule>
<element>BUNDLE</element>
<limits>
<limit>
<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.70</minimum>
</limit>
</limits>
</rule>
</rules>
</configuration>
<executions>
<execution>
<goals>
Expand All @@ -132,6 +150,13 @@
<goal>report</goal>
</goals>
</execution>
<execution>
<id>check</id>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
Expand Down
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
<name>estore-internal</name>
<url>http://maven.apache.org</url>
<properties>
<maven.compiler.release>8</maven.compiler.release>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

Expand Down
13 changes: 7 additions & 6 deletions s
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ function check_deps() {
! hash "mvn" && \
{ echo "missing maven (https://maven.apache.org/download.cgi)"; return 1; }

java -version 2>&1 | grep -qE 'version "1\.8|version "8' || \
{ echo "no java 8 available (apt-get install openjdk-8-jdk; macOS: brew install openjdk@8)"; return 1; }
if ! hash "java" 2>/dev/null || ! hash "javac" 2>/dev/null; then
echo "no JDK available (CI uses Oracle JDK 25; bytecode target is Java 8)"
return 1
fi

! hash "wget" && \
{ echo "missing wget (apt-get install wget)"; return 1; }
Expand Down Expand Up @@ -51,10 +53,9 @@ function install_deps() {
{ echo "Failed to install Maven"; return 1; }
fi

if ! hash "java" 2>/dev/null || ! java -version 2>&1 | grep -qE 'version "1\.8|version "8'; then
echo "Installing Java 8..."
apt-get update && apt-get install -y openjdk-8-jdk || \
{ echo "Failed to install Java 8"; return 1; }
if ! hash "java" 2>/dev/null || ! hash "javac" 2>/dev/null; then
echo "No JDK found. Install Oracle JDK 25 from https://www.oracle.com/java/technologies/downloads/"
return 1
fi

if ! hash "wget" 2>/dev/null; then
Expand Down
Loading