Welcome to Automating-Product-Migration-Testing! This project aims to automate the testing process of the migration client for WSO2 Identity Server when migrating between different product versions. By automating the migration client test execution, we can significantly reduce the overhead and effort involved in manual testing.
Click on the badge above to view the current status of the main migration workflow. The workflow ensures seamless execution of the migration client tests across various infrastructure combinations, including different databases and operating systems.
This repository contains automation scripts and tools for automating product migration testing.
.
├── product-is
│ ├── .github
│ │ └── workflows
│ │ └── migration-automation.yml
│ ├── data-population-and-validation
│ │ ├── 1-user-creation
│ │ │ │ ├── create-bulk-users.sh
│ │ │ │ ├── create-user.sh
│ │ ├── 2-tenant-creation
│ │ │ │ ├── create-tenant-soapAPI.sh
│ │ │ │ ├── create-tenant.sh
│ │ ├── 3-userstore-creation
│ │ │ │ ├── create-user-in-userstore.sh
│ │ │ │ ├── create-userstore-soapAPI.sh
│ │ │ │ └── create-userstore.sh
│ │ ├── 4-service-provider-creation
│ │ │ │ ├── create-user-in-a-service-provider.sh
│ │ │ │ ├── register-a-service-provider-get-access-token-mac.sh
│ │ │ │ └── register-a-service-provider-get-access-token-ubuntu.sh
│ │ │ │ ├── register-a-service-provider.sh
│ │ │ │ ├── validate-database-mac.sh
│ │ │ │ └── validate-database-ubuntu.sh
│ │ ├── 5-group-creation
│ │ │ │ ├── create-group.sh
│ │ │ │ ├── create-groups-with-users.sh
│ │ └── automated-data-poputation-and-validation-script-mac.sh
│ │ └── automated-data-poputation-and-validation-script-ubuntu.sh
│ ├── documents
│ │ └── Automating Product Migration Testing.word
│ ├── local-setups
│ │ ├── mac-os
│ │ │ ├── migration-automation-script-macos.sh
│ │ ├── ubuntu-os
│ │ │ │ ├──automated-data-population-and-validation-script-ubuntu-local-setup.sh
│ │ │ │ ├──automating-product-migration-testing.sh
│ │ │ │ └── backup_db.sql
│ │ │ │ ├──change-deployment-toml.sh
│ │ │ │ ├── change-migration-configyaml.sh
│ │ │ │ └── copy-jar-file-mysql.sh
│ │ │ │ ├──create-new-database.sh
│ │ │ │ ├── deployment.toml
│ │ │ │ └── enter-login-credentials.sh
│ │ │ │ ├── env.sh
│ │ │ │ ├── humanoid.jpg
│ │ │ │ └── migration-automation-script-linux.sh
│ │ │ │ ├── migration-terminal.sh
│ │ │ │ ├── migration.log
│ │ │ │ └── server-start-newIS.sh
│ │ │ │ ├── server-start.sh
│ │ │ │ ├── validate-database-ubuntu-local-setup.sh
│ ├── migration-automation
│ │ ├── deployment-tomls
│ │ │ ├── IS-5.9
│ │ │ │ ├── deployment-mssql.toml
│ │ │ │ ├── deployment-mysql.toml
│ │ │ │ └── deployment-postgre.toml
│ │ │ │ ├── deployment-mssql-migration.toml
│ │ │ │ ├── deployment-mysql-migration.toml
│ │ │ │ └── deployment-postgre-migration.toml
│ │ │ ├── IS-5.10
│ │ │ │ ├── deployment-mssql.toml
│ │ │ │ ├── deployment-mysql.toml
│ │ │ │ └── deployment-postgre.toml
│ │ │ │ ├── deployment-mssql-migration.toml
│ │ │ │ ├── deployment-mysql-migration.toml
│ │ │ │ └── deployment-postgre-migration.toml
│ │ │ ├── IS-5.11
│ │ │ │ ├── deployment-mssql.toml
│ │ │ │ ├── deployment-mysql.toml
│ │ │ │ └── deployment-postgre.toml
│ │ │ │ ├── deployment-mssql-migration.toml
│ │ │ │ ├── deployment-mysql-migration.toml
│ │ │ │ └── deployment-postgre-migration.toml
│ │ │ ├── IS-6.0
│ │ │ │ ├── deployment-mssql.toml
│ │ │ │ ├── deployment-mysql.toml
│ │ │ │ └── deployment-postgre.toml
│ │ │ │ ├── deployment-mssql-migration.toml
│ │ │ │ ├── deployment-mysql-migration.toml
│ │ │ │ └── deployment-postgre-migration.toml
│ │ │ ├── IS-6.1
│ │ │ │ ├── deployment-mssql.toml
│ │ │ │ ├── deployment-mysql.toml
│ │ │ │ └── deployment-postgre.toml
│ │ │ │ ├── deployment-mssql-migration.toml
│ │ │ │ ├── deployment-mysql-migration.toml
│ │ │ │ └── deployment-postgre-migration.toml
│ │ │ └── IS-6.2
│ │ │ ├── deployment-mssql.toml
│ │ │ ├── deployment-mysql.toml
│ │ │ └── deployment-postgre.toml
│ │ │ ├── deployment-mssql-migration.toml
│ │ │ ├── deployment-mysql-migration.toml
│ │ │ └── deployment-postgre-migration.toml
│ │ ├── mac-os
│ │ │ ├── migration-script-mac.sh
│ │ │ └── setup-mysql-mac.sh
│ │ ├── ubuntu-os
│ │ │ ├── migration-script-ubuntu.sh
│ │ │ └── setup-mysql-ubuntu.sh
│ │ ├── enter-login-credentials.sh
│ │ ├── env.sh
│ │ ├── logs.txt
│ │ ├── change-deployment-toml.sh
│ │ └── change-migration-config-yaml.sh
│ │ └──download-migration-client.sh
│ │ └──update-pack.sh
│ │ ├── copy-jar-file.sh
│ │ └── start-server.sh
│ │ └── stop-server.sh
│ ├── utils
│ | ├── db-scripts
│ │ | ├── IS-5.11
│ │ │ ├── Bps
│ │ │ ├── consent
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgresfour.sql
│ │ │ ├── identity
│ │ │ │ ├── uma
│ │ │ │ │ ├── mysql.sql
│ │ │ │ │ ├── mssql.sql
│ │ │ │ │ ├── postgresthree.sql
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgrestwo.sql
│ │ │ ├── metrics
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgresfive.sql
│ │ │ ├── mssql.sql
│ │ │ ├── mysql.sql
│ │ │ ├── postgresone.sql
│ │ | ├── IS-5.9
│ │ │ ├── Bps
│ │ │ ├── consent
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgresfour.sql
│ │ │ ├── identity
│ │ │ │ ├── uma
│ │ │ │ │ ├── mysql.sql
│ │ │ │ │ ├── mssql.sql
│ │ │ │ │ ├── postgresthree.sql
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgrestwo.sql
│ │ │ ├── metrics
│ │ │ │ ├── mysql.sql
│ │ │ │ ├── mssql.sql
│ │ │ │ ├── postgresfive.sql
│ │ │ ├── mssql.sql
│ │ │ ├── mysql.sql
│ │ │ ├── postgresone.sql
│ │ ├── database-create-scripts
│ │ │ ├── mysql.sql
│ │ │ ├── mssql.sql
│ │ │ ├── postgressql.sql
│ | ├── jars
│ │ | ├── mssql
│ │ │ | ├── mssql-jdbc-12.2.0.jre11.jar
│ │ │ | ├── mssql-jdbc-12.2.0.jre8.jar
│ │ │ | └── mssql-jdbc-9.2.0.jre8.jar
│ │ | ├── mysql
│ │ │ | └── mysql-connector-java-8.0.29.jar
│ │ | └── postgresql
│ │ | └── postgresql-42.5.3.jar
│ | ├── update-tools
│ │ | ├── wso2update_darwin
│ │ | ├── wso2update_linux
│ │ | ├── wso2update_windows.exe
│ | ├── migration-client
│ |
│ └── other-db-scripts
│ └── config-management-is-5-11.sql
└── README.md
-
.github/workflows
:- Contains the workflow file
MainMigrationWorkflow.yml
, which defines the main migration workflow for the repository.
- Contains the workflow file
-
data-population-and-validation
:- Contains subdirectories for different operating systems:
mac-os
,ubuntu-os
, andwindows-os
. - Each OS directory includes scripts for data population and validation, such as user creation, tenant creation, user store creation, service provider creation, and group creation.
- Additionally, the directory includes a common script named
data-population-script.sh
for data population.
- Contains subdirectories for different operating systems:
-
documents
:- Contains the document file
Automating Product Migration Testing.word
, which likely provides documentation or instructions related to automating product migration testing.
- Contains the document file
-
local-setups
:- Contains subdirectories for different operating systems:
mac-os
,ubuntu-os
, andwindows-os
. - Each OS directory includes setup scripts specific to that operating system, such as changing deployment toml files, migration configuration YAML files, copying jar files, migration scripts, and MySQL setup scripts.
- Contains subdirectories for different operating systems:
-
migration-automation
:- Contains subdirectories for different operating systems:
mac-os
,ubuntu-os
, andwindows-os
. - Each OS directory includes scripts specific to that operating system for migration automation, such as changing deployment toml files, changing migration configuration YAML files, copying jar files, migration scripts, and MySQL setup scripts.
- The
deployment-tomls
directory includes subdirectories for different versions of the migration target (e.g., IS-5.10, IS-5.11) and respective deployment toml files for MSSQL, MySQL, and Postgre databases.
- Contains subdirectories for different operating systems:
utils
:
-
Contains utility scripts and helper tools.
-
db-scripts
:- Contains subdirectories for different versions of the migration target (e.g., IS-5.11, IS-5.9) and respective subdirectories for database create scripts.
- Additionally, the directory includes deployment toml files for MSSQL databases.
-
jars
:- Contains subdirectories for different database types:
mssql
,mysql
, andpostgresql
. - The
mssql
directory includesmssql-jdbc-12.2.0.jre11.jar
file for MSSQL database connectivity. - The
mysql
directory includes themysql-connector-java-8.0.29.jar
file for MySQL database connectivity. - The
postgresql
directory includes thepostgresql-42.5.3.jar
file for PostgreSQL database connectivity.
- Contains subdirectories for different database types:
-
migration-client
:- Contains the
wso2is-migration-1.0.225.zip
file, which represents a migration client for performing specific migration tasks.
- Contains the
-
LICENSE
:- Represents the license file (
LICENSE
) for the repository, which is Apache License 2.0.
- Represents the license file (
-
README.md
:- Represents the readme file (
README.md
) for the repository, which provides information about the project, its purpose, and instructions for usage or contribution.
- Represents the readme file (
Feel free to explore each directory to find more details about the specific components and scripts.
To get started with the migration process, follow the steps below:
-
Open the
.env
file located in the root directory of the project. -
Update the necessary environment variables based on your specific setup and requirements.
-
Obtain the URLs of the WSO2 Identity Server releases from the WSO2 Identity Server Releases page.
-
Navigate to the MainMigrationWorkflow workflow on GitHub.
-
Execute the main migration workflow by providing your inputs and following the on-screen prompts.
-
Once the workflow starts, the migration automation scripts will be triggered to automate the migration process.
-
After the migration process completes, you will receive the necessary artifacts.
-
Use these artifacts to test the migrated setup and validate the migration.
This project utilizes the following technologies and tools:
-
wso2 Identity Server Versions:
- 5.9.0
- 5.10.0
- 5.11.0
- 6.0.0
- 6.1.0
- 6.2.0
-
wso2 Migration Client:
- Version: wso2is-migration-1.0.225.zip
-
wso2 REST APIs
-
wso2 SOAP APIs
-
Google Drive APIs - API V4
-
Bash Scripting
-
Docker
-
Git
-
Github Actions
-
Curl
-
Powershell
-
Home Brew
-
Java 11 Temurin
-
Dbeaver
-
Meld
-
VSCode
-
SoapUI 5.7.0.desktop
-
Keystore Explorer
-
Postman
-
MySQL Version:
- 8
- JAR: mysql-connector-java-8.0.29.jar
-
MSSQL Version:
- 12
- JAR: mssql-jdbc-12.2.0.jre11.jar
-
PostgreSQL Version:
- 42
- JAR: postgresql-42.5.3.jar
Feel free to explore the repository and leverage these technologies and tools for the project.