blob: fe5e875db3627e1fa1af9e902dcb71593ae5d07b [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (c) 2019, 2022 Oracle and/or its affiliates. All rights reserved.
This program and the accompanying materials are made available under the
terms of the Eclipse Public License v. 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0,
or the Eclipse Distribution License v. 1.0 which is available at
http://www.eclipse.org/org/documents/edl-v10.php.
SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
-->
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<name>EclipseLink Oracle Extension Test</name>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.oracle.test</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.parent</artifactId>
<version>4.0.0-SNAPSHOT</version>
<relativePath>../../pom.xml</relativePath>
</parent>
<properties>
<!--Properties used for test resources filtering/replacement-->
<pa.connection.user>PAS_CONN</pa.connection.user>
<pa.connection.password>${db.pwd}2</pa.connection.password>
<pa.proxyuser>PAS_PROXY</pa.proxyuser>
<pa.proxyuser.password>password</pa.proxyuser.password>
<pa.proxyuser2>${pa.proxyuser}2</pa.proxyuser2>
<pa.proxyuser2.password>${pa.proxyuser.password}2</pa.proxyuser2.password>
<test-skip-oracle-extension>${skipTests}</test-skip-oracle-extension>
</properties>
<dependencies>
<!--Other modules-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.oracle</artifactId>
<scope>test</scope>
</dependency>
<!--API dependecies-->
<dependency>
<groupId>jakarta.transaction</groupId>
<artifactId>jakarta.transaction-api</artifactId>
<optional>true</optional>
<scope>test</scope>
</dependency>
<!--Other libraries dependencies-->
<!--Oracle proprietary dependencies-->
<!--JDBC driver dependencies-->
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xmlparserv2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ucp</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.xml</groupId>
<artifactId>xdb</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.oracle.database.observability</groupId>
<artifactId>dms</artifactId>
<scope>test</scope>
</dependency>
<!--Test dependencies-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<!--API dependecies-->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>javax.transaction-api</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.jms</groupId>
<artifactId>javax.jms-api</artifactId>
<version>2.0.1</version>
<scope>test</scope>
</dependency>
<!--Oracle proprietary dependencies-->
<dependency>
<groupId>com.oracle.database.messaging</groupId>
<artifactId>aqapi</artifactId>
<scope>test</scope>
</dependency>
<!--Other modules-->
<!--EclipseLink JPA-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa</artifactId>
<scope>test</scope>
</dependency>
<!--EclipseLink Core test framework-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.core.test.framework</artifactId>
<scope>test</scope>
</dependency>
<!--EclipseLink Core test classes-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.core.test</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<!--EclipseLink JPA test framework-->
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.jpa.test.framework</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<!--Pack test classes due dependency to other modules (Oracle Spatial Test)-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>jar-tests</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<executions>
<execution>
<id>jar-test-sources</id>
<phase>package</phase>
<goals>
<goal>test-jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-to-distribution-module</id>
<phase>install</phase>
<goals>
<goal>copy</goal>
</goals>
</execution>
</executions>
<configuration>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<classifier>tests</classifier>
<destFileName>${project.artifactId}-tests.jar</destFileName>
</artifactItem>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<classifier>test-sources</classifier>
<destFileName>${project.artifactId}-test-sources.jar</destFileName>
</artifactItem>
</artifactItems>
<outputDirectory>${distribution.directory}</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<!--Oracle Extension related profiles-->
<profile>
<id>oracle</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<dependenciesToScan>
<dependency>org.eclipse.persistence:org.eclipse.persistence.core.test.framework</dependency>
</dependenciesToScan>
<!--Set system properties required for tests-->
<systemPropertiesFile>${test.properties.file}</systemPropertiesFile>
<workingDirectory>${project.build.directory}/test-run</workingDirectory>
</configuration>
<executions>
<execution>
<id>clear-database</id>
<phase>process-test-resources</phase>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skipTests>${test-skip-oracle-extension}</skipTests>
<reportNameSuffix>clear-database</reportNameSuffix>
<includes>
<test>org.eclipse.persistence.testing.tests.ClearDatabaseSchemaTest</test>
</includes>
</configuration>
</execution>
<execution>
<id>test-oracle-extension</id>
<goals>
<goal>integration-test</goal>
</goals>
<configuration>
<skipTests>${test-skip-oracle-extension}</skipTests>
<reportNameSuffix>test-oracle-extension</reportNameSuffix>
<argLine>-Djava.naming.factory.initial=com.sun.jndi.cosnaming.CNCtxFactory</argLine>
<systemPropertyVariables>
<pa.connection.user>${pa.connection.user}</pa.connection.user>
<pa.connection.password>${pa.connection.password}</pa.connection.password>
<pa.proxyuser>${pa.proxyuser}</pa.proxyuser>
<pa.proxyuser.password>${pa.proxyuser.password}</pa.proxyuser.password>
<pa.proxyuser2>${pa.proxyuser2}</pa.proxyuser2>
<pa.proxyuser2.password>${pa.proxyuser2.password}</pa.proxyuser2.password>
<!--Override db.platform system property loaded from file.
For Oracle DB Extension tests is required: org.eclipse.persistence.platform.database.oracle.Oracle12Platform
instead of: org.eclipse.persistence.platform.database.Oracle12Platform-->
<db.platform>${db.platform.oracle.ext}</db.platform>
</systemPropertyVariables>
<includes>
<include>org.eclipse.persistence.testing.tests.OracleTestModel</include>
<include>org.eclipse.persistence.testing.tests.xdb.XDBTestModel</include>
<include>org.eclipse.persistence.testing.tests.xdb.XDBTestModelMWIntegration</include>
<include>org.eclipse.persistence.testing.tests.unwrappedconnection.UnwrapConnectionXDBTestModel</include>
</includes>
</configuration>
</execution>
<execution>
<id>verify-integration-tests</id>
<goals>
<goal>verify</goal>
</goals>
<configuration>
<skip>${integration.test.skip.verify}</skip>
</configuration>
</execution>
</executions>
</plugin>
<!--This plugin sql-maven-plugin must be after maven-surefire-plugin to call dbteardown*.sql scripts after tests-->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<!-- common configuration shared by all executions -->
<configuration>
<username>${db.sys.user} as sysdba</username>
<password>${db.sys.pwd}</password>
<autocommit>true</autocommit>
<onError>continue</onError>
<!--all executions are ignored if -Dmaven.test.skip=true-->
<skip>${test-skip-oracle-extension}</skip>
</configuration>
<executions>
<!-- create proxy user and grant permissions -->
<execution>
<id>setup-connuser</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<sqlCommand>
DROP USER ${pa.connection.user} CASCADE;
CREATE USER ${pa.connection.user} IDENTIFIED BY ${pa.connection.password} ACCOUNT UNLOCK;
GRANT CONNECT TO ${pa.connection.user};
GRANT RESOURCE TO ${pa.connection.user};
GRANT CREATE SESSION TO ${pa.connection.user};
GRANT UNLIMITED TABLESPACE TO ${pa.connection.user};
GRANT CREATE ANY VIEW TO ${pa.connection.user};
GRANT CREATE ANY context TO ${pa.connection.user};
GRANT DROP ANY context TO ${pa.connection.user};
GRANT EXECUTE ON dbms_flashback TO ${pa.connection.user};
GRANT EXECUTE ON dbms_rls TO ${pa.connection.user};
GRANT EXECUTE ON dbms_session TO ${pa.connection.user};
GRANT change notification TO ${pa.connection.user};
GRANT CREATE ANY directory TO ${pa.connection.user};
GRANT DROP ANY directory TO ${pa.connection.user};
</sqlCommand>
</configuration>
</execution>
<execution>
<id>setup-proxy-authentication</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<sqlCommand>
DROP USER ${pa.proxyuser} CASCADE;
DROP USER ${pa.proxyuser2} CASCADE;
CREATE USER ${pa.proxyuser} IDENTIFIED BY ${pa.proxyuser.password} ACCOUNT UNLOCK;
CREATE USER ${pa.proxyuser2} IDENTIFIED BY ${pa.proxyuser2.password} ACCOUNT UNLOCK;
GRANT UNLIMITED TABLESPACE TO ${pa.proxyuser};
GRANT UNLIMITED TABLESPACE TO ${pa.proxyuser2};
GRANT CONNECT TO ${pa.proxyuser};
GRANT CONNECT TO ${pa.proxyuser2};
GRANT RESOURCE TO ${pa.proxyuser};
GRANT CREATE SESSION TO ${pa.proxyuser};
ALTER USER ${pa.proxyuser} GRANT CONNECT THROUGH ${pa.connection.user};
ALTER USER ${pa.proxyuser2} GRANT CONNECT THROUGH ${pa.connection.user};
</sqlCommand>
</configuration>
</execution>
<execution>
<id>setup-proxy-authentication-create-employee-table</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>${pa.connection.user}</username>
<password>${pa.connection.password}</password>
<sqlCommand>
CREATE TABLE JPA_PROXY_EMPLOYEE (
EMP_ID NUMBER (15) NOT NULL,
F_NAME VARCHAR2 (40) NULL,
L_NAME VARCHAR2 (40) NULL,
PRIMARY KEY (EMP_ID)
);
CREATE TABLE PROXY_EMPLOYEE_SEQ (
SEQ_NAME VARCHAR2 (50) NOT NULL,
SEQ_COUNT NUMBER (38) NULL,
PRIMARY KEY (SEQ_NAME)
);
INSERT INTO PROXY_EMPLOYEE_SEQ (SEQ_NAME, SEQ_COUNT) VALUES ('PROXY_EMPLOYEE_SEQ', 1);
</sqlCommand>
</configuration>
</execution>
<execution>
<id>setup-proxy-authentication-create-phonenumber-table</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<username>${pa.proxyuser}</username>
<password>${pa.proxyuser.password}</password>
<sqlCommand>
CREATE TABLE PROXY_PHONENUMBER (
OWNER_ID NUMBER (15) NOT NULL,
TYPE VARCHAR2 (15) NOT NULL,
AREA_CODE VARCHAR2 (3) NULL,
NUMB VARCHAR2 (8) NULL,
PRIMARY KEY (OWNER_ID, TYPE)
);
</sqlCommand>
</configuration>
</execution>
<execution>
<id>grant-permissions-to-proxyuser</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<sqlCommand>
GRANT ALTER ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT DELETE ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT INSERT ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT SELECT ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT UPDATE ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT INDEX ON ${pa.connection.user}.JPA_PROXY_EMPLOYEE TO ${pa.proxyuser};
GRANT ALTER ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
GRANT DELETE ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
GRANT INSERT ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
GRANT SELECT ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
GRANT UPDATE ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
GRANT INDEX ON ${pa.connection.user}.PROXY_EMPLOYEE_SEQ TO ${pa.proxyuser};
</sqlCommand>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>test-oracle-extension</id>
<properties>
<test-skip-oracle-extension>false</test-skip-oracle-extension>
</properties>
</profile>
</profiles>
</project>