Skip to content
Open
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
1 change: 1 addition & 0 deletions binary-compat/.mvn/jvm.config
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-Xmx1024m
18 changes: 18 additions & 0 deletions binary-compat/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# This module is inteded to test binary compatibility of YouTrackDB releases.
Copy link

Copilot AI Oct 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'inteded' to 'intended'.

Suggested change
# This module is inteded to test binary compatibility of YouTrackDB releases.
# This module is intended to test binary compatibility of YouTrackDB releases.

Copilot uses AI. Check for mistakes.
Copy link

Copilot AI Oct 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected spelling of 'inteded' to 'intended'.

Suggested change
# This module is inteded to test binary compatibility of YouTrackDB releases.
# This module is intended to test binary compatibility of YouTrackDB releases.

Copilot uses AI. Check for mistakes.


## Usage example:

1. build the image:

```shell
docker build -t bin_compat_yt . -f ./docker/Dockerfile
```

2. run the tests:

```shell
docker run --rm -v path_to_config:/config -v path_to_local_db:/config/test-db bin_compat_yt
```

sample config could be found in `tests/src/test/resources/binary-compatibility-test-config.yaml`
12 changes: 12 additions & 0 deletions binary-compat/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
############################################################
# Dockerfile to run an YouTrackDB (Graph) Container
# for current developed version
############################################################

FROM azul/zulu-openjdk:21.0.8-jdk

RUN apt-get update && apt-get install -y git
COPY target/youtrackdb-binary-compat-*.jar /youtrackdb-binary-compat.jar

ENV YTDB_BINARY_COMPAT_TEST_CONFIG=/config/binary-compatibility-test-config.yaml
CMD ["java", "-jar", "/youtrackdb-binary-compat.jar"]
243 changes: 243 additions & 0 deletions binary-compat/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>

<!-- 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. -->

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-parent</artifactId>
<version>${revision}${sha1}${changelist}</version>
<relativePath>../pom.xml</relativePath>
</parent>

<artifactId>youtrackdb-binary-compat</artifactId>

<name>YouTrackDB Binary Compatibility Tests</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--This property is updated automatically and is needed to make build reproducible-->
<project.build.outputTimestamp>2023-01-01T00:00:00Z</project.build.outputTimestamp>
<argLine>
-ea
-Xms${heapSize}
-Xmx${heapSize}
-Dyoutrackdb.storage.diskCache.bufferSize=4096
-Dyoutrackdb.memory.directMemory.trackMode=true
-Djava.util.logging.manager=com.jetbrains.youtrackdb.internal.common.log.ShutdownLogManager
-Dyoutrackdb.storage.diskCache.checksumMode=StoreAndThrow
-Dyoutrackdb.security.warningDefaultUsers=false
-Dyoutrackdb.file.log.deletion=false
--add-opens jdk.unsupported/sun.misc=ALL-UNNAMED
</argLine>
</properties>

<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-yaml</artifactId>
<version>2.15.2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-client</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-tools</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-server</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-test-commons</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>

<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-core</artifactId>
<version>${project.version}</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.youtrackdb</groupId>
<artifactId>youtrackdb-core</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.37</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.37</version>
<scope>test</scope>
</dependency>
<!-- plotting -->
<dependency>
<groupId>org.knowm.xchart</groupId>
<artifactId>xchart</artifactId>
<version>3.8.8</version>
<scope>test</scope>
</dependency>
<!-- maven client to fetch other version of youtrackdb for binary compatibility tests -->
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-connector-basic</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-api</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-spi</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-util</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-impl</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-http</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven.resolver</groupId>
<artifactId>maven-resolver-transport-file</artifactId>
<version>1.9.20</version>
</dependency>
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-resolver-provider</artifactId>
<version>3.9.9</version>
</dependency>
<!-- git client to fetch other version of youtrackdb for binary compatibility tests -->
<dependency>
<groupId>org.eclipse.jgit</groupId>
<artifactId>org.eclipse.jgit</artifactId>
<version>7.3.0.202506031305-r</version>
</dependency>
<!-- to unarchive database for binary compatibility tests -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.26.2</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<!-- Replacing default-compile as it is treated specially by Maven -->
<execution>
<id>default-compile</id>
<phase>none</phase>
</execution>
<!-- Replacing default-testCompile as it is treated specially by Maven -->
<execution>
<id>default-testCompile</id>
<phase>none</phase>
</execution>
<execution>
<id>java-compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>java-test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
<transformers>
<!-- This makes the JAR executable by setting the Main-Class -->
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.jetbrains.youtrackdb.auto.BaseDBCompatibilityChecker</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
<inherited>false</inherited>
</plugin>
</plugins>
</build>
</project>
Loading
Loading