diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 0000000000..6579b6554e
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,25 @@
+name: Apollo main Java CI with Maven
+
+on:
+ push:
+ branches: [ $default-branch ]
+ pull_request:
+ branches: [ $default-branch ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - run: echo "š The job was automatically triggered by a ${{ github.event_name }} event."
+ - run: echo "š§ This job is now running on a ${{ runner.os }} server hosted by GitHub !"
+ - run: echo "š The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
+ - uses: actions/checkout@v3
+ - name: Set up JDK 17
+ uses: actions/setup-java@v3
+ with:
+ java-version: '17'
+ distribution: 'temurin'
+ cache: maven
+ - name: Build with Maven
+ run: mvn -B package --file pom.xml
\ No newline at end of file
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 0000000000..48dc07821f
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,33 @@
+# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
+# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven
+
+# This workflow uses actions that are not certified by GitHub.
+# They are provided by a third-party and are governed by
+# separate terms of service, privacy policy, and support
+# documentation.
+
+name: Apollo main Java CI with Maven
+
+on:
+ push:
+ branches: [ $default-branch ]
+ pull_request:
+ branches: [ $default-branch ]
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+
+ steps:
+ - run: echo "š The job was automatically triggered by a ${{ github.event_name }} event."
+ - run: echo "š§ This job is now running on a ${{ runner.os }} server hosted by GitHub !"
+ - run: echo "š The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
+ - uses: actions/checkout@v3
+ - name: Set up JDK 11
+ uses: actions/setup-java@v3
+ with:
+ java-version: '11'
+ distribution: 'temurin'
+ cache: maven
+ - name: Build with Maven
+ run: mvn -B package --file pom.xml
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000..08c892871b
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,27 @@
+# Changelog
+
+All notable changes to this project will be documented in this file. Dates are displayed in UTC.
+
+### [1.51.0](https://github.com/ApolloFoundation/Apollo/releases/tag/1.51.0)
+
+> 24 June 2022
+
+Significant sharding speedup and robustness upgrade, general refactoring and tests fixes
+
+- Fix PhasingPollServiceTest [`c393038`](https://github.com/ApolloFoundation/Apollo/commit/c393038d2e6b335596278ee09b24b654bafa9c89)
+- APL-2142 - Speedup sharding tn2 [`#1213`](https://github.com/ApolloFoundation/Apollo/pull/1213)
+- APL-2127 - Speedup account export [`#1208`](https://github.com/ApolloFoundation/Apollo/pull/1208)
+- Fixed smc tests [`#1205`](https://github.com/ApolloFoundation/Apollo/pull/1205)
+- Fix active phasings fetch for shard export [`#1192`](https://github.com/ApolloFoundation/Apollo/pull/1192)
+- Fix dgs/phasing/fts tests, add active phasings consistency check [`d5c1b99`](https://github.com/ApolloFoundation/Apollo/commit/d5c1b99b56a42a47f4c34d63383b3acdc185b843)
+- Add CHANGELOG
+
+
+### [1.50.36](https://github.com/ApolloFoundation/Apollo/releases/tag/1.50.36)
+
+> 29 April 2022
+
+Updater's certificates cleanup and update
+
+- Updater certificates update [`#1215`](https://github.com/ApolloFoundation/Apollo/pull/1215)
+- Cleanup unused update certificates [`a3d6816`](https://github.com/ApolloFoundation/Apollo/commit/a3d6816dc738c3e0a60991cc37bc295716061d76)
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/1_1.crt b/apl-conf/src/main/resources/conf-tn1/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/1_2.crt b/apl-conf/src/main/resources/conf-tn1/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/1_3.crt b/apl-conf/src/main/resources/conf-tn1/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/1_4.crt b/apl-conf/src/main/resources/conf-tn1/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/2_1.crt b/apl-conf/src/main/resources/conf-tn1/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/2_2.crt b/apl-conf/src/main/resources/conf-tn1/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/2_3.crt b/apl-conf/src/main/resources/conf-tn1/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/intermediate.crt b/apl-conf/src/main/resources/conf-tn1/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn1/certs/rootCA.crt b/apl-conf/src/main/resources/conf-tn1/certs/rootCA.crt
deleted file mode 100644
index dbe28ae482..0000000000
--- a/apl-conf/src/main/resources/conf-tn1/certs/rootCA.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/1_1.crt b/apl-conf/src/main/resources/conf-tn15/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/1_2.crt b/apl-conf/src/main/resources/conf-tn15/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/1_3.crt b/apl-conf/src/main/resources/conf-tn15/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/1_4.crt b/apl-conf/src/main/resources/conf-tn15/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/2_1.crt b/apl-conf/src/main/resources/conf-tn15/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/2_2.crt b/apl-conf/src/main/resources/conf-tn15/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/2_3.crt b/apl-conf/src/main/resources/conf-tn15/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/intermediate.crt b/apl-conf/src/main/resources/conf-tn15/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/certs/rootCA.crt b/apl-conf/src/main/resources/conf-tn15/certs/rootCA.crt
deleted file mode 100644
index dbe28ae482..0000000000
--- a/apl-conf/src/main/resources/conf-tn15/certs/rootCA.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn15/chains.json b/apl-conf/src/main/resources/conf-tn15/chains.json
index 4e9ba3f25b..08c7459880 100644
--- a/apl-conf/src/main/resources/conf-tn15/chains.json
+++ b/apl-conf/src/main/resources/conf-tn15/chains.json
@@ -50,7 +50,34 @@
},
"shardingSettings": {
"enabled": true,
- "frequency": 2000
+ "frequency": 100000
+ },
+ "smcSettings": {
+ "masterAccountPublicKey": "dd8a4621988974e669d115b5e0d48234eed145ff2ac94ec1012805459470fe1e",
+ "fuelLimitMinValue": 10000000,
+ "fuelLimitMaxValue": 30000000000,
+ "fuelPriceMinValue": 10000,
+ "fuelPriceMaxValue": 100000000
+ }
+ },
+ {
+ "height": 600000,
+ "maxNumberOfTransactions": 255,
+ "maxArbitraryMessageLength": 160,
+ "maxNumberOfChildAccounts": 10,
+ "blockTime": 2,
+ "maxBlockTimeLimit": 3,
+ "minBlockTimeLimit": 1,
+ "maxBalance": 30000000000,
+ "consensusSettings": {
+ "adaptiveForgingSettings": {
+ "enabled": "true",
+ "adaptiveBlockTime": 10
+ }
+ },
+ "shardingSettings": {
+ "enabled": true,
+ "frequency": 10000
},
"smcSettings": {
"masterAccountPublicKey": "dd8a4621988974e669d115b5e0d48234eed145ff2ac94ec1012805459470fe1e",
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/1_1.crt b/apl-conf/src/main/resources/conf-tn2/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/1_2.crt b/apl-conf/src/main/resources/conf-tn2/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/1_3.crt b/apl-conf/src/main/resources/conf-tn2/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/1_4.crt b/apl-conf/src/main/resources/conf-tn2/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/2_1.crt b/apl-conf/src/main/resources/conf-tn2/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/2_2.crt b/apl-conf/src/main/resources/conf-tn2/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/2_3.crt b/apl-conf/src/main/resources/conf-tn2/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/intermediate.crt b/apl-conf/src/main/resources/conf-tn2/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn2/certs/rootCA.crt b/apl-conf/src/main/resources/conf-tn2/certs/rootCA.crt
deleted file mode 100644
index dbe28ae482..0000000000
--- a/apl-conf/src/main/resources/conf-tn2/certs/rootCA.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/1_1.crt b/apl-conf/src/main/resources/conf-tn3/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/1_2.crt b/apl-conf/src/main/resources/conf-tn3/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/1_3.crt b/apl-conf/src/main/resources/conf-tn3/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/1_4.crt b/apl-conf/src/main/resources/conf-tn3/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/2_1.crt b/apl-conf/src/main/resources/conf-tn3/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/2_2.crt b/apl-conf/src/main/resources/conf-tn3/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/2_3.crt b/apl-conf/src/main/resources/conf-tn3/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/intermediate.crt b/apl-conf/src/main/resources/conf-tn3/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf-tn3/certs/rootCA.crt b/apl-conf/src/main/resources/conf-tn3/certs/rootCA.crt
deleted file mode 100644
index dbe28ae482..0000000000
--- a/apl-conf/src/main/resources/conf-tn3/certs/rootCA.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/1_1.crt b/apl-conf/src/main/resources/conf/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-conf/src/main/resources/conf/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/1_2.crt b/apl-conf/src/main/resources/conf/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-conf/src/main/resources/conf/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/1_3.crt b/apl-conf/src/main/resources/conf/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-conf/src/main/resources/conf/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/1_4.crt b/apl-conf/src/main/resources/conf/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-conf/src/main/resources/conf/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/2_1.crt b/apl-conf/src/main/resources/conf/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-conf/src/main/resources/conf/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/2_2.crt b/apl-conf/src/main/resources/conf/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-conf/src/main/resources/conf/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/2_3.crt b/apl-conf/src/main/resources/conf/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-conf/src/main/resources/conf/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/CAroot.crt b/apl-conf/src/main/resources/conf/certs/CAroot.crt
new file mode 100644
index 0000000000..74a1894012
--- /dev/null
+++ b/apl-conf/src/main/resources/conf/certs/CAroot.crt
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+MIIGWTCCBEGgAwIBAgIUFz5OcQaPnWOzsDgWeYn6ce7k/iAwDQYJKoZIhvcNAQEL
+BQAwgbMxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0wCwYDVQQHDARLeWl2
+MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYDVQQLDB1BcG9sbG8gQmxv
+Y2tjaGFpbiBEZXZlbG9wbWVudDEaMBgGA1UEAwwRQXBvbGxvIEJsb2NrY2hhaW4x
+JzAlBgkqhkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRnZS5pbzAeFw0yMzA0
+MTkwNDM0MzZaFw00MzA0MTQwNDM0MzZaMIGzMQswCQYDVQQGEwJVQTENMAsGA1UE
+CAwES3lpdjENMAsGA1UEBwwES3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0
+ZDEmMCQGA1UECwwdQXBvbGxvIEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxGjAYBgNV
+BAMMEUFwb2xsbyBCbG9ja2NoYWluMScwJQYJKoZIhvcNAQkBFhhyb3N0eXNsYXZA
+Zmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCk
+qjPeucp7aY4KBR0GIBdIWhAzu9yylLqJ3duwLTAjq6e2//IFnox1AIPH5vecvcm+
+gyseEh/cvfKvKxZX8zr2I0uYKePQr0o2oLwbccJiQ8nSLVsNbrgTFhYP9T994Ob9
+1xqlDjkltL2FNOj3lz7WUUB2PjK1Sc9xGcmT+3Ra+r+3hgTIV2IYd2KAN9JQVOOH
+Cjhb77AlEIinSvO6GtpQA88NlMrl0yR5cl+V7KbcLZgXGyY3OuTL+f0FmO/F/gmy
+RP0tgMijJ5ilDNuulvMg3xQfWGVhaAkRhfSuvtmfbug76S75ijpvP79OkjJ8C0ej
+PmRNWtWPwQABjBL0Asu+NqnFLeF0NP9Y4NBzDAvIC8ISdHDQ/NoYrhuOllu7MU95
+hOUv7AdZsMob91/Hx1yP49TjPkwxfvHS2NjdKJbBOA5+WLmDs1iQWjAV6awtU4nt
+Rwbfretw0BLPyaImuBLI0aNEcI4JYDKz8mSqJLNhc4AR4v/IXdLOKbI15Ts67cbz
+IBWfVZKsnZmo8KFOSbsm+pLX8KsvWg9ITZNjp9/x13GnCcgVAKl32CuB8m8X3cNi
+55cEk6R6AoIkAHCYBgJdlk9b41U/Kj6BR+4dNkhKjk8l368uKUKEnkGyS7muDTW3
+oXyhNoPF4oY/jS9HXZhP4wCOplfsq+ybUJNqGwU5UQIDAQABo2MwYTAdBgNVHQ4E
+FgQUVOIeZBvxQK1GZM8aLvjiJW3BGYYwHwYDVR0jBBgwFoAUVOIeZBvxQK1GZM8a
+LvjiJW3BGYYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI
+hvcNAQELBQADggIBAAUarn40VJFo3AknFZEGJ8vqV5CWhMGHb9CIp/fLNm5XQZdn
+r6GcUh15xxv4E1A+VYmjRr/jgtCLaYD5hd9/DdSPsRuHQ5TTY1R3sE9gloXaMibV
+cUhwFu2rwZu237b0oNr7HcnIwleV8bK52TISvFGWGdkcPIUCS7+PLj+PA5EbY/TL
+Rknty1wKgM+vi8ILTWwixtcPmeeOejWUwkYuRjTxZoXFxqoCX/kNpYcHeq8kLuQ8
+vl+KWgnVFyFQdfgvXy8PnQIR52eiqgWNcxbWo+HxKMmxJT3KjGumvO5hLnT4cPos
+uSdA/aKDOA1Biw39fFiy6dl1Dk6Tfbm5t2KhT6UJLbBGs2vn6fyHhFdQXQ8GQbVP
+9M4agj/keZdfBN/XJKwKmESn1x0qvrEt98sBrJkNhuuiPGyLzybm4hIdOWNPBhae
+LV5ysuP/KVsvO1VFIkYUYlbz7W2MobwWeQBWGViBDTmG7CMi+TqTXzaHlm3eQcaJ
+0JD5FycpYA7B2EUTs72JtcxFBZgQ1Q6jRpsu81kShNNrxqf1lsjK++CQBT/GowtN
+eU2fvJg/F/hTVjvtBI4viB8JgZ5DiOm1cKHcRHSETf8JssDyJlC2DlfAGuyDRgtJ
+xYvzvkZv9292P2s9asnsrmG3muLs5LdIHie13mJOdFQ2EQVQ0XFOn9qq8JQC
+-----END CERTIFICATE-----
diff --git a/apl-conf/src/main/resources/conf/certs/intermediate.crt b/apl-conf/src/main/resources/conf/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-conf/src/main/resources/conf/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-core/pom.xml b/apl-core/pom.xml
index c301f8d93d..218e6215ac 100644
--- a/apl-core/pom.xml
+++ b/apl-core/pom.xml
@@ -276,7 +276,6 @@
org.testcontainers
junit-jupiter
- test
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/app/AplCore.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/app/AplCore.java
index 0c4e4e7195..8cdfc38a58 100644
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/app/AplCore.java
+++ b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/app/AplCore.java
@@ -288,7 +288,7 @@ private void startUp() {
aplAppStatus.durableTaskUpdate(initCoreTaskID, 100.0, message);
log.info("Copyright Ā© 2013-2016 The NXT Core Developers.");
log.info("Copyright Ā© 2016-2017 Jelurida IP B.V..");
- log.info("Copyright Ā© 2017-2021 Apollo Foundation.");
+ log.info("Copyright Ā© 2017-2022 Apollo Foundation.");
log.info("See LICENSE.txt for more information");
if (API.getWelcomePageUri() != null) {
log.info("Client UI is at " + API.getWelcomePageUri());
@@ -306,8 +306,6 @@ private void startUp() {
}
aplAppStatus.durableTaskFinished(initCoreTaskID, true, "AplCore init failed (DB)");
log.error("Database initialization failed ", e);
- //TODO: move DB operations to proper place
- // AplCoreRuntime.getInstance().getRuntimeMode().recoverDb();
} catch (Exception e) {
aplAppStatus.durableTaskFinished(initCoreTaskID, true, "AplCore init failed");
log.error(e.getMessage(), e);
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/converter/db/BigIntegerColumnMapper.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/converter/db/BigIntegerColumnMapper.java
deleted file mode 100644
index 2292fcfba3..0000000000
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/converter/db/BigIntegerColumnMapper.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.apollocurrency.aplwallet.apl.core.converter.db;
-
-import org.jdbi.v3.core.mapper.ColumnMapper;
-import org.jdbi.v3.core.statement.StatementContext;
-
-import java.math.BigInteger;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.util.Optional;
-
-/**
- * Convert from database long into java BigInteger
- */
-public class BigIntegerColumnMapper implements ColumnMapper {
-
- public BigIntegerColumnMapper() {
- }
-
- @Override
- public BigInteger map(ResultSet r, int columnNumber, StatementContext ctx) throws SQLException {
- String string = r.getString(columnNumber);
- return Optional.ofNullable(string).map(BigInteger::new).orElse(null);
- }
-}
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/PrunableDbTable.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/PrunableDbTable.java
index e3c457ea49..20a997efb9 100644
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/PrunableDbTable.java
+++ b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/PrunableDbTable.java
@@ -81,6 +81,8 @@ public MinMaxValue getMinMaxValue(int height, int currentTime) {
String selectMinSql = String.format("SELECT IFNULL(min(DB_ID), 0) as min_id, " +
"IFNULL(max(DB_ID), 0) as max_id, IFNULL(count(*), 0) as count, max(height) as max_height from %s where HEIGHT <= ? and transaction_timestamp >= ?", table);
TransactionalDataSource dataSource = databaseManager.getDataSource();
+ log.trace("MIN/MAX select, height: {} - minPrunLT: {} = {}",
+ height, blockchainConfig.getMinPrunableLifetime(), currentTime - blockchainConfig.getMinPrunableLifetime());
try (Connection con = dataSource.getConnection();
PreparedStatement pstmt = con.prepareStatement(selectMinSql)) {
pstmt.setInt(1, height);
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserver.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserver.java
deleted file mode 100644
index 9e0de73380..0000000000
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserver.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright Ā© 2018-2019 Apollo Foundation
- */
-package com.apollocurrency.aplwallet.apl.core.service.appdata;
-
-import com.apollocurrency.aplwallet.apl.core.app.observer.events.TrimEvent;
-import com.apollocurrency.aplwallet.apl.core.dao.prunable.TaggedDataTable;
-import com.apollocurrency.aplwallet.apl.core.dao.state.account.AccountInfoTable;
-import com.apollocurrency.aplwallet.apl.core.dao.state.asset.AssetTable;
-import com.apollocurrency.aplwallet.apl.core.dao.state.currency.CurrencyTable;
-import com.apollocurrency.aplwallet.apl.core.dao.state.dgs.DGSGoodsTable;
-import com.apollocurrency.aplwallet.apl.core.dao.state.poll.PollTable;
-import com.apollocurrency.aplwallet.apl.core.db.DatabaseManager;
-import com.apollocurrency.aplwallet.apl.core.service.fulltext.FullTextOperationData;
-import com.apollocurrency.aplwallet.apl.util.db.TransactionalDataSource;
-import com.apollocurrency.aplwallet.apl.core.shard.observer.DeleteOnTrimData;
-import com.apollocurrency.aplwallet.apl.util.injectable.PropertiesHolder;
-import com.apollocurrency.aplwallet.apl.util.task.NamedThreadFactory;
-import lombok.extern.slf4j.Slf4j;
-
-import jakarta.annotation.PostConstruct;
-import jakarta.annotation.PreDestroy;
-import jakarta.enterprise.event.Event;
-import jakarta.enterprise.event.ObservesAsync;
-import jakarta.enterprise.inject.Vetoed;
-import jakarta.enterprise.util.AnnotationLiteral;
-import jakarta.inject.Inject;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.SQLException;
-import java.util.HashSet;
-import java.util.Objects;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ThreadLocalRandom;
-import java.util.concurrent.TimeUnit;
-
-import static com.apollocurrency.aplwallet.apl.core.service.fulltext.FullTextConfig.DEFAULT_SCHEMA;
-import static com.apollocurrency.aplwallet.apl.util.Constants.LONG_TIME_FIVE_SECONDS;
-
-@Slf4j
-@Deprecated // remove later
-@Vetoed
-public class DeleteTrimObserver {
-
- private final Object lock = new Object();
- private final Queue deleteOnTrimDataQueue = new ConcurrentLinkedQueue<>();
- protected final DatabaseManager databaseManager;
- protected final PropertiesHolder propertiesHolder;
- private volatile boolean trimDerivedTablesEnabled = true;
- private final int COMMIT_BATCH_SIZE;
- private final ScheduledExecutorService executorService =
- Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("apl-delete-on-trim"));
-
- private final Event fullTextOperationDataEvent;
- /**
- * Tables to processed for FTS updates
- */
- private static final Set fullTextSearchTableNames = new HashSet<>(6){{
- add(AccountInfoTable.TABLE_NAME);
- add(AssetTable.TABLE_NAME);
- add(CurrencyTable.TABLE_NAME);
- add(DGSGoodsTable.TABLE_NAME);
- add(PollTable.TABLE_NAME);
- add(TaggedDataTable.TABLE_NAME);
- }};
-
- @Inject
- public DeleteTrimObserver(DatabaseManager databaseManager,
- PropertiesHolder propertiesHolder,
- Event fullTextOperationDataEvent) {
- this.databaseManager = databaseManager;
- this.propertiesHolder = Objects.requireNonNull(propertiesHolder);
- this.COMMIT_BATCH_SIZE = propertiesHolder.BATCH_COMMIT_SIZE();
- this.fullTextOperationDataEvent = Objects.requireNonNull(fullTextOperationDataEvent);
- }
-
- @PostConstruct
- void init() {
- // schedule first run with random delay in 5 sec range
- executorService.schedule(taskToCall, ThreadLocalRandom.current().nextLong(
- LONG_TIME_FIVE_SECONDS - 1L) + 1L, TimeUnit.MILLISECONDS);
- }
-
- @PreDestroy
- void shutdown() {
- executorService.shutdownNow();
- }
-
- public void onDeleteTrimDataAsync(@ObservesAsync @TrimEvent DeleteOnTrimData deleteOnTrimData) {
- log.trace("onDeleteTrimDataAsync = {}", deleteOnTrimData);
- if (deleteOnTrimData.isResetEvent()) {
- log.trace("onDeleteTrimDataAsync : clean up = {}, size[{}]",
- deleteOnTrimData.isResetEvent(), deleteOnTrimDataQueue.size());
- this.deleteOnTrimDataQueue.clear();
- } else {
- log.trace("onDeleteTrimDataAsync : queue size = [{}]", deleteOnTrimDataQueue.size());
- this.deleteOnTrimDataQueue.add(deleteOnTrimData);
- }
- }
-
- private Callable taskToCall = new Callable<>() {
- public Void call() {
- try {
- // Do work.
- processScheduledDeleteTrimEvent();
- } finally {
- // Reschedule next new Callable with next random delay within 5 sec range
- executorService.schedule(this,
- ThreadLocalRandom.current().nextLong(
- LONG_TIME_FIVE_SECONDS - 1L) + 1L, TimeUnit.MILLISECONDS);
- }
- return null;
- }
- };
-
- private void processScheduledDeleteTrimEvent() {
- log.trace("processScheduledDeleteTrimEvent() scheduled on previous run...");
- if (trimDerivedTablesEnabled) {
- boolean performDeleteTrimData;
- DeleteOnTrimData deleteOnTrimData;
- synchronized (lock) {
- if (trimDerivedTablesEnabled) {
- deleteOnTrimData = deleteOnTrimDataQueue.peek();
- performDeleteTrimData = deleteOnTrimData != null;
- if (performDeleteTrimData) {
- performOneTableDelete(deleteOnTrimData);
- deleteOnTrimDataQueue.remove();
- log.debug("Performed trim on = {}", deleteOnTrimData);
- } else {
- log.trace("NO trim data to delete...");
- }
- }
- }
- } else {
- log.trace("DISABLED: processScheduledDeleteTrimEvent()");
- }
- }
-
- public long performOneTableDelete(DeleteOnTrimData deleteOnTrimData) {
- log.trace("start performOneTableDelete(): {}", deleteOnTrimData);
- long startDeleteTime = System.currentTimeMillis();
- long deleted = 0L;
- if (deleteOnTrimData != null
- && deleteOnTrimData.getDbIdSet() != null
- && deleteOnTrimData.getDbIdSet().size() > 0) {
-
- TransactionalDataSource dataSource = databaseManager.getDataSource();
- boolean inTransaction = dataSource.isInTransaction();
- if (!inTransaction) {
- dataSource.begin();
- }
- try (Connection con = dataSource.getConnection();
- PreparedStatement pstmtDeleteById =
- con.prepareStatement("DELETE FROM " + deleteOnTrimData.getTableName() + " WHERE db_id = ?");
- ) {
- long index = 0;
- for (Long id : deleteOnTrimData.getDbIdSet()) {
- int deleteResult = deleteByDbId(pstmtDeleteById, id);
- if (deleteResult > 0 && fullTextSearchTableNames.contains(deleteOnTrimData.getTableName())) {
- // fire Async event to FTS
- FullTextOperationData operationData = new FullTextOperationData(
- DEFAULT_SCHEMA, deleteOnTrimData.getTableName(), Thread.currentThread().getName());
- operationData.setDbIdValue(id);
- operationData.setOperationType(FullTextOperationData.OperationType.DELETE);
- log.trace("Put lucene index update data = {}", operationData);
- this.fullTextOperationDataEvent.select(new AnnotationLiteral() {}).fire(operationData);
- }
- deleted += deleteResult;
-// addDeleteToBatch(pstmtDeleteById, id);
- index++;
- if (index % COMMIT_BATCH_SIZE == 0) {
-// int[] result = pstmtDeleteById.executeBatch();
- dataSource.commit(false);
-// deleted += Arrays.stream(result).asLongStream().sum();
- }
- }
-// int[] result = pstmtDeleteById.executeBatch();
- dataSource.commit(!inTransaction);
-// deleted += Arrays.stream(result).asLongStream().sum();
- } catch (Exception e) {
- log.error("Batch delete error on table {}", deleteOnTrimData.getTableName(), e);
- }
- log.debug("performOneTableDelete(): Delete table '{}' in {} ms: deleted=[{}]",
- deleteOnTrimData.getTableName(), System.currentTimeMillis() - startDeleteTime, deleted);
- }
- return deleted;
- }
-
- private void addDeleteToBatch(PreparedStatement pstmtDeleteByDbId, long dbId) throws SQLException {
- pstmtDeleteByDbId.setLong(1, dbId);
- pstmtDeleteByDbId.addBatch(); // <-- batching
- }
-
- private int deleteByDbId(PreparedStatement pstmtDeleteByDbId, long dbId) throws SQLException {
- pstmtDeleteByDbId.setLong(1, dbId);
- return pstmtDeleteByDbId.executeUpdate();
- }
-
- /**
- * For unit tests mostly
- * @return internal queue with data
- */
- public Queue getDeleteOnTrimDataQueue() {
- return this.deleteOnTrimDataQueue;
- }
-
- public int getDeleteOnTrimDataQueueSize() {
- return this.deleteOnTrimDataQueue.size();
- }
-
-}
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainImpl.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainImpl.java
index 6b8056ff55..9576a202a7 100644
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainImpl.java
+++ b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainImpl.java
@@ -636,14 +636,20 @@ private boolean hasShardTransactionByFullHash(byte[] fullHash, int height) {
long id = Convert.transactionFullHashToId(fullHash);
TransactionIndex transactionIndex = transactionIndexDao.getByTransactionId(id);
byte[] hash = getTransactionIndexFullHash(transactionIndex);
- return Arrays.equals(hash, fullHash)
- && transactionIndexDao.getTransactionHeightByTransactionId(id) <= height;
+ boolean isHashEqual = Arrays.equals(hash, fullHash);
+ Integer transactionHeightByTransactionId = transactionIndexDao.getTransactionHeightByTransactionId(id);
+ boolean isHeightBelow = transactionHeightByTransactionId != null && transactionHeightByTransactionId <= height;
+ log.trace("is TR found in SHARD and height in DB '{}' or in Shard '{}'", isHashEqual, isHeightBelow);
+ return isHashEqual && isHeightBelow;
}
@Override
@Transactional(readOnly = true)
public boolean hasTransactionByFullHash(byte[] fullHash, int height) {
- return transactionService.hasTransactionByFullHash(fullHash, height) || hasShardTransactionByFullHash(fullHash, height);
+ boolean existsInDb = transactionService.hasTransactionByFullHash(fullHash, height);
+ boolean existsInShard = hasShardTransactionByFullHash(fullHash, height);
+ log.trace("is TR found by hash and height in DB '{}' or in Shard '{}'", existsInDb, existsInShard);
+ return existsInDb || existsInShard;
}
@Override
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineImpl.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineImpl.java
index 88ab2046ea..03271044ae 100644
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineImpl.java
+++ b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineImpl.java
@@ -419,6 +419,7 @@ public MigrateState exportCsv(CommandParamInfo paramInfo) {
durableTaskUpdateByState(state, 17.0, "CSV exporting...");
try {
int pruningTime = trimDerivedTables(paramInfo.getSnapshotBlockHeight() + 1);
+ log.debug("exportCsv by pruningTime = {} at height = {}", pruningTime, paramInfo.getSnapshotBlockHeight() + 1);
if (StringUtils.isBlank(recovery.getProcessedObject())) {
try (Stream files = Files.list(csvExporter.getDataExportPath())) {
files
diff --git a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixV2Validator.java b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixV2Validator.java
index 1728cedd5b..0a261dd7e0 100644
--- a/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixV2Validator.java
+++ b/apl-core/src/main/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixV2Validator.java
@@ -29,6 +29,12 @@ public PhasingAppendixV2Validator(PhasingAppendixValidator phasingAppendixValida
public void validateFinishHeightAndTime(Integer height, Integer time, PhasingAppendix phasingAppendix) throws AplException.NotCurrentlyValidException {
int finishHeight = phasingAppendix.getFinishHeight();
+ if (height == null) {
+ throw new AplException.NotCurrentlyValidException("'Height' should NOT be null");
+ }
+ if (time == null) {
+ throw new AplException.NotCurrentlyValidException("'Time' should NOT be null");
+ }
if ((finishHeight != -1 && time != -1) || (finishHeight == -1 && time == -1)) {
throw new AplException.NotCurrentlyValidException("Only one parameter should be filled 'phasingFinishHeight or phasingFinishTime'");
}
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountAssetBalanceObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountAssetBalanceObserverTest.java
new file mode 100644
index 0000000000..0a56f0ea19
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountAssetBalanceObserverTest.java
@@ -0,0 +1,83 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.FundingMonitorInstance;
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.MonitoredAccount;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.AccountAsset;
+import com.apollocurrency.aplwallet.apl.core.model.HoldingType;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.funding.FundingMonitorService;
+import com.apollocurrency.aplwallet.apl.crypto.Crypto;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.lenient;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AccountAssetBalanceObserverTest {
+
+ static {
+ Convert2.init("APL", 1739068987193023818L);
+ }
+
+ @Mock
+ FundingMonitorService fundingMonitorService;
+ private AccountAssetBalanceObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ observer = new AccountAssetBalanceObserver(fundingMonitorService);
+ }
+
+ @Test
+ void onAccountAssetBalance_stoppedMonitor() {
+ AccountAsset asset = new AccountAsset(1L, 1L, 100L, 200L, 1);
+ when(fundingMonitorService.isStopped()).thenReturn(true);
+
+ observer.onAccountAssetBalance(asset);
+
+ verify(fundingMonitorService).isStopped();
+ }
+
+ @Test
+ void onAccountAssetBalance() {
+ AccountAsset asset = new AccountAsset(1L, 1L, 100L, 200L, 1000);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.ASSET, 1L, "prop",
+ 100L, 1000L, 10, asset.getAccountId(), keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.ASSET, 1L, "prop",
+ 100L, 1000L, 10, asset.getAccountId(), keySeed),
+ 100L, 1000L, 10
+ );
+ when(fundingMonitorService.getMonitoredAccountListById(asset.getAccountId())).thenReturn(
+ List.of(
+ monAcc1,
+ monAcc2
+ )
+ );
+ when(fundingMonitorService.containsPendingEvent(any(MonitoredAccount.class))).thenReturn(false).thenReturn(false);
+ lenient().when(fundingMonitorService.addPendingEvent(any(MonitoredAccount.class))).thenReturn(true).thenReturn(true);
+
+ observer.onAccountAssetBalance(asset);
+
+ verify(fundingMonitorService).getMonitors();
+ verify(fundingMonitorService, times(2)).containsPendingEvent(any(MonitoredAccount.class));
+ verify(fundingMonitorService, times(2)).addPendingEvent(any(MonitoredAccount.class));
+ }
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountBalanceObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountBalanceObserverTest.java
new file mode 100644
index 0000000000..4af1c690e6
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountBalanceObserverTest.java
@@ -0,0 +1,82 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.FundingMonitorInstance;
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.MonitoredAccount;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.Account;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.AccountAsset;
+import com.apollocurrency.aplwallet.apl.core.model.HoldingType;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.funding.FundingMonitorService;
+import com.apollocurrency.aplwallet.apl.crypto.Crypto;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.lenient;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AccountBalanceObserverTest {
+
+ static {
+ Convert2.init("APL", 1739068987193023818L);
+ }
+
+ @Mock
+ FundingMonitorService fundingMonitorService;
+ private AccountBalanceObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ observer = new AccountBalanceObserver(fundingMonitorService);
+ }
+
+ @Test
+ void onAccountAssetBalance_stoppedMonitor() {
+ Account account = new Account(1L, 1L, 100L, 200L, 10L, 100);
+ when(fundingMonitorService.isStopped()).thenReturn(true);
+
+ observer.onAccountBalance(account);
+
+ verify(fundingMonitorService).isStopped();
+ }
+
+ @Test
+ void onAccountAssetBalance() {
+ Account account = new Account(1L, 1L, 100L, 200L, 10L, 100);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.APL, 1L, "prop",
+ 100L, 1000L, 10, account.getId(), keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.APL, 1L, "prop",
+ 100L, 1000L, 10, account.getId(), keySeed),
+ 100L, 1000L, 10
+ );
+ when(fundingMonitorService.getMonitoredAccountListById(account.getId())).thenReturn(
+ List.of(
+ monAcc1,
+ monAcc2
+ )
+ );
+ when(fundingMonitorService.containsPendingEvent(any(MonitoredAccount.class))).thenReturn(false).thenReturn(false);
+ lenient().when(fundingMonitorService.addPendingEvent(any(MonitoredAccount.class))).thenReturn(true).thenReturn(true);
+
+ observer.onAccountBalance(account);
+
+ verify(fundingMonitorService).getMonitors();
+ verify(fundingMonitorService, times(2)).containsPendingEvent(any(MonitoredAccount.class));
+ verify(fundingMonitorService, times(2)).addPendingEvent(any(MonitoredAccount.class));
+ }
+
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountCurrencyBalanceObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountCurrencyBalanceObserverTest.java
new file mode 100644
index 0000000000..4c0d17cf85
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountCurrencyBalanceObserverTest.java
@@ -0,0 +1,82 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.FundingMonitorInstance;
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.MonitoredAccount;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.AccountCurrency;
+import com.apollocurrency.aplwallet.apl.core.model.HoldingType;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.funding.FundingMonitorService;
+import com.apollocurrency.aplwallet.apl.crypto.Crypto;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.lenient;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AccountCurrencyBalanceObserverTest {
+
+ static {
+ Convert2.init("APL", 1739068987193023818L);
+ }
+
+ @Mock
+ FundingMonitorService fundingMonitorService;
+ private AccountCurrencyBalanceObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ observer = new AccountCurrencyBalanceObserver(fundingMonitorService);
+ }
+
+ @Test
+ void onAccountCurrencyBalance_stoppedMonitor() {
+ AccountCurrency accountCurrency = new AccountCurrency(1L, 1L, 100L, 200L, 100);
+ when(fundingMonitorService.isStopped()).thenReturn(true);
+
+ observer.onAccountCurrencyBalance(accountCurrency);
+
+ verify(fundingMonitorService).isStopped();
+ }
+
+ @Test
+ void onAccountCurrencyBalance() {
+ AccountCurrency accountCurrency = new AccountCurrency(1L, 1L, 100L, 200L, 100);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, accountCurrency.getAccountId(), keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, accountCurrency.getAccountId(), keySeed),
+ 100L, 1000L, 10
+ );
+ when(fundingMonitorService.getMonitoredAccountListById(accountCurrency.getAccountId())).thenReturn(
+ List.of(
+ monAcc1,
+ monAcc2
+ )
+ );
+ when(fundingMonitorService.containsPendingEvent(any(MonitoredAccount.class))).thenReturn(false).thenReturn(false);
+ lenient().when(fundingMonitorService.addPendingEvent(any(MonitoredAccount.class))).thenReturn(true).thenReturn(true);
+
+ observer.onAccountCurrencyBalance(accountCurrency);
+
+ verify(fundingMonitorService).getMonitors();
+ verify(fundingMonitorService, times(2)).containsPendingEvent(any(MonitoredAccount.class));
+ verify(fundingMonitorService, times(2)).addPendingEvent(any(MonitoredAccount.class));
+ }
+
+
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountObserverTest.java
new file mode 100644
index 0000000000..660cfa2e71
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountObserverTest.java
@@ -0,0 +1,133 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.AccountEvent;
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.AccountEventBinding;
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.AccountEventType;
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.AccountLedgerEventType;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.Account;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.AccountLease;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.LedgerEntry;
+import com.apollocurrency.aplwallet.apl.core.model.Block;
+import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountLeaseService;
+import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountLedgerService;
+import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountService;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
+import jakarta.enterprise.event.Event;
+import jakarta.enterprise.util.AnnotationLiteral;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AccountObserverTest {
+
+ static {
+ Convert2.init("APL", 1739068987193023818L);
+ }
+
+ @Mock
+ AccountService accountService;
+ @Mock
+ AccountLeaseService accountLeaseService;
+ @Mock
+ Event accountLeaseEvent;
+ @Mock
+ AccountLedgerService accountLedgerService;
+
+ AccountObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ this.observer = new AccountObserver(accountService, accountLeaseService, accountLeaseEvent, accountLedgerService);
+ }
+
+ @Test
+ void onBlockApplied() {
+ Block block = mock(Block.class);
+ when(block.getHeight()).thenReturn(5000).thenReturn(5000).thenReturn(6000);
+
+ AccountLease accountLease1 = new AccountLease(1L, 5000, 6000, 1L, 5000);
+ AccountLease accountLease3 = new AccountLease(3L, 6000, 5000, 2L, 5000);
+ accountLease3.setNextLeasingHeightFrom(5000);
+
+ when(accountLeaseService.getLeaseChangingAccountsAtHeight(5000)).thenReturn(List.of(
+ accountLease1,
+ new AccountLease(2L, 6000, 5000, 2L, 5000),
+ accountLease3
+ ));
+ Account account1 = new Account(1L, 1L, 100L, 200L, 10L, 100);
+ Account account2 = new Account(2L, 1L, 100L, 200L, 10L, 100);
+ when(accountService.getAccount(anyLong())).thenReturn(account1).thenReturn(account2);
+ Event firedEvent = mock(Event.class);
+ doNothing().doNothing().when(firedEvent).fire(any(AccountLease.class));
+ AnnotationLiteral literal = AccountEventBinding.literal(AccountEventType.LEASE_STARTED);
+ AnnotationLiteral literalEnded = AccountEventBinding.literal(AccountEventType.LEASE_ENDED);
+ doReturn(firedEvent).when(accountLeaseEvent).select(literal);
+ doReturn(firedEvent).doReturn(firedEvent).when(accountLeaseEvent).select(literalEnded);
+
+ this.observer.onBlockApplied(block);
+
+ verify(accountLeaseService).getLeaseChangingAccountsAtHeight(5000);
+ verify(accountLeaseEvent, times(2)).select(literal);
+ verify(accountLeaseEvent, times(2)).select(literalEnded);
+ verify(accountService, times(3)).update(any(Account.class));
+ verify(accountLeaseService, times(1)).insertLease(any(AccountLease.class));
+ verify(accountLeaseService, times(1)).deleteLease(any(AccountLease.class));
+ }
+
+ @Test
+ void onLedgerCommitEntries() {
+ AccountLedgerEventType event = AccountLedgerEventType.COMMIT_ENTRIES;
+ doNothing().when(accountLedgerService).commitEntries();
+
+ this.observer.onLedgerCommitEntries(event);
+ verify(accountLedgerService).commitEntries();
+ }
+
+ @Test
+ void onLedgerClearEntries() {
+ AccountLedgerEventType event = AccountLedgerEventType.COMMIT_ENTRIES;
+ doNothing().when(accountLedgerService).clearEntries();
+
+ this.observer.onLedgerClearEntries(event);
+ verify(accountLedgerService).clearEntries();
+ }
+
+ @Test
+ void onLogLedgerEntries() {
+ LedgerEntry entry = mock(LedgerEntry.class);
+ when(accountLedgerService.mustLogEntry(anyLong(), anyBoolean())).thenReturn(true).thenReturn(false);
+
+ this.observer.onLogLedgerEntries(entry);
+ this.observer.onLogLedgerEntries(entry);
+
+ verify(accountLedgerService).logEntry(entry);
+ verify(accountLedgerService, times(2)).mustLogEntry(anyLong(), anyBoolean());
+ }
+
+ @Test
+ void onLogUnconfirmedLedgerEntries() {
+ LedgerEntry entry = mock(LedgerEntry.class);
+ when(accountLedgerService.mustLogEntry(anyLong(), anyBoolean())).thenReturn(true).thenReturn(false);
+
+ this.observer.onLogUnconfirmedLedgerEntries(entry);
+ this.observer.onLogUnconfirmedLedgerEntries(entry);
+
+ verify(accountLedgerService).logEntry(entry);
+ verify(accountLedgerService, times(2)).mustLogEntry(anyLong(), anyBoolean());
+ }
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountPropertyObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountPropertyObserverTest.java
new file mode 100644
index 0000000000..22355c31a4
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/AccountPropertyObserverTest.java
@@ -0,0 +1,209 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.FundingMonitorInstance;
+import com.apollocurrency.aplwallet.apl.core.entity.appdata.funding.MonitoredAccount;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.AccountProperty;
+import com.apollocurrency.aplwallet.apl.core.model.HoldingType;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.funding.FundingMonitorService;
+import com.apollocurrency.aplwallet.apl.crypto.Crypto;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class AccountPropertyObserverTest {
+ static {
+ Convert2.init("APL", 1739068987193023818L);
+ }
+ @Mock
+ FundingMonitorService fundingMonitorService;
+ private AccountPropertyObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ this.observer = new AccountPropertyObserver(this.fundingMonitorService);
+ }
+
+ @Test
+ void onAccountSetProperty_Stopped() {
+ AccountProperty property = mock(AccountProperty.class);
+ when(fundingMonitorService.isStopped()).thenReturn(true);
+
+ observer.onAccountSetProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ }
+
+ @Test
+ void onAccountSetProperty() {
+ AccountProperty property = new AccountProperty(
+ 1L, 1L, 1L, "prop", "val", 5000);
+ when(fundingMonitorService.isStopped()).thenReturn(false);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, property.getRecipientId(), keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop2",
+ 100L, 1000L, 10, property.getRecipientId(), keySeed),
+ 100L, 1000L, 10
+ );
+ when(fundingMonitorService.getMonitoredAccountListById(property.getRecipientId())).thenReturn(
+ List.of(
+ monAcc1,
+ monAcc2
+ )
+ );
+ when(fundingMonitorService.createMonitoredAccount(anyLong(), any(FundingMonitorInstance.class), anyString()))
+ .thenReturn(monAcc1).thenReturn(monAcc2);
+
+ observer.onAccountSetProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ verify(fundingMonitorService, times(1)).getMonitoredAccountListById(anyLong());
+ verify(fundingMonitorService, times(1)).createMonitoredAccount(anyLong(), any(FundingMonitorInstance.class), anyString());
+ verify(fundingMonitorService, times(1)).addPendingEvent(any(MonitoredAccount.class));
+ }
+
+ @Test
+ void onAccountSetProperty_addAccount() {
+ AccountProperty property = new AccountProperty(
+ 1L, 1L, 1L, "prop", "val", 5000);
+ when(fundingMonitorService.isStopped()).thenReturn(false);
+
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop2",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of()).thenReturn(List.of(
+ new FundingMonitorInstance(HoldingType.ASSET, 1L, "prop",
+ 100L, 100L, 10, 1L, keySeed),
+ new FundingMonitorInstance(HoldingType.ASSET, 1L, "prop",
+ 100L, 100L, 10, 2L, keySeed)
+ ));
+
+ when(fundingMonitorService.getMonitoredAccountListById(property.getRecipientId()))
+ .thenReturn(null).thenReturn(null).thenReturn(new ArrayList<>(1));
+ when(fundingMonitorService.createMonitoredAccount(anyLong(), any(FundingMonitorInstance.class), anyString()))
+ .thenReturn(monAcc1).thenReturn(monAcc2);
+
+
+ observer.onAccountSetProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ verify(fundingMonitorService, times(2)).getMonitors();
+ verify(fundingMonitorService, times(3)).getMonitoredAccountListById(anyLong());
+ verify(fundingMonitorService, times(2)).createMonitoredAccount(anyLong(), any(FundingMonitorInstance.class), anyString());
+ verify(fundingMonitorService, times(2)).addPendingEvent(any(MonitoredAccount.class));
+ verify(fundingMonitorService, times(1)).putAccountList(anyLong(), any(ArrayList.class));
+ }
+
+ @Test
+ void onAccountSetProperty_Exception() {
+ AccountProperty property = mock(AccountProperty.class);
+ when(fundingMonitorService.isStopped()).thenReturn(false);
+ when(fundingMonitorService.getMonitors()).thenThrow(new RuntimeException());
+
+ observer.onAccountSetProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ verify(fundingMonitorService).getMonitors();
+ }
+
+ @Test
+ void onAccountDeleteProperty_stopped() {
+ AccountProperty property = mock(AccountProperty.class);
+ when(fundingMonitorService.isStopped()).thenReturn(true);
+
+ observer.onAccountSetProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ }
+
+ @Test
+ void onAccountDeleteProperty_one() {
+ AccountProperty property = new AccountProperty(
+ 1L, 1L, 1L, "prop", "val", 5000);
+ when(fundingMonitorService.isStopped()).thenReturn(false);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop2",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+
+ when(fundingMonitorService.getMonitoredAccountListById(property.getRecipientId()))
+ .thenReturn(List.of());
+
+ observer.onAccountDeleteProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ verify(fundingMonitorService, times(1)).getMonitors();
+ verify(fundingMonitorService, times(1)).getMonitoredAccountListById(anyLong());
+ verify(fundingMonitorService, times(1)).removeByAccountId(anyLong());
+ }
+
+ @Test
+ void onAccountDeleteProperty_two() {
+ AccountProperty property = new AccountProperty(
+ 1L, 1L, 1L, "prop", "val", 5000);
+ when(fundingMonitorService.isStopped()).thenReturn(false);
+ when(fundingMonitorService.getMonitors()).thenReturn(List.of());
+
+ byte[] keySeed = Crypto.getKeySeed(new byte[]{0, 1, 2, 3});
+ MonitoredAccount monAcc1 = new MonitoredAccount(1L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+ MonitoredAccount monAcc2 = new MonitoredAccount(2L,
+ new FundingMonitorInstance(HoldingType.CURRENCY, 1L, "prop2",
+ 100L, 1000L, 10, 1L, keySeed),
+ 100L, 1000L, 10
+ );
+ List accList = new ArrayList(2);
+ accList.add(monAcc1);
+ accList.add(monAcc2);
+ when(fundingMonitorService.getMonitoredAccountListById(property.getRecipientId()))
+ .thenReturn(accList);
+
+ observer.onAccountDeleteProperty(property);
+
+ verify(fundingMonitorService).isStopped();
+ verify(fundingMonitorService, times(1)).getMonitors();
+ verify(fundingMonitorService, times(1)).getMonitoredAccountListById(anyLong());
+ }
+
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/DGSObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/DGSObserverTest.java
new file mode 100644
index 0000000000..dd72636de8
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/DGSObserverTest.java
@@ -0,0 +1,92 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.Account;
+import com.apollocurrency.aplwallet.apl.core.entity.state.account.LedgerEvent;
+import com.apollocurrency.aplwallet.apl.core.entity.state.dgs.DGSGoods;
+import com.apollocurrency.aplwallet.apl.core.entity.state.dgs.DGSPurchase;
+import com.apollocurrency.aplwallet.apl.core.model.Block;
+import com.apollocurrency.aplwallet.apl.core.service.state.DGSService;
+import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountService;
+import com.apollocurrency.aplwallet.apl.util.db.DbIterator;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import java.math.BigInteger;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoInteractions;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class DGSObserverTest {
+
+ @Mock
+ DGSService dgsService;
+ @Mock
+ AccountService accountService;
+
+ private DGSObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ this.observer = new DGSObserver(dgsService, accountService);
+ }
+
+ @Test
+ void onBlockApplied_zeroHeight() {
+ Block block = mock(Block.class);
+ doReturn(0).when(block).getHeight();
+
+ this.observer.onBlockApplied(block);
+
+ verifyNoInteractions(dgsService);
+ verifyNoInteractions(accountService);
+ }
+
+ @Test
+ void onBlockApplied() {
+ Block block = mock(Block.class);
+ doReturn(1000).when(block).getHeight();
+ DbIterator iterator = mock(DbIterator.class);
+ when(iterator.hasNext()).thenReturn(true).thenReturn(false);
+ DGSPurchase purchase1 = new DGSPurchase(
+ 1L, 1000, 1L, 1L, 1L, 1L, 10, 120, 1100, null, 1000, false, null, false, null, false, false,
+ List.of(), List.of(), 10L, 10L);
+ when(iterator.next()).thenReturn(purchase1);
+
+ Account account = new Account(1L, 1000);
+ when(accountService.getAccount(1L)).thenReturn(account);
+ doNothing().when(accountService).addToUnconfirmedBalanceATM(account, LedgerEvent.DIGITAL_GOODS_PURCHASE_EXPIRED,
+ 1L, 1200L);
+ String[] parsedTags = {};
+ DGSGoods dgsGoods = new DGSGoods(1L, 1000, 1L, 1L, "name", "descr", "tags",
+ parsedTags, 1000, false, 10, 10L, false);
+ when(dgsService.getGoods(1L)).thenReturn(dgsGoods);
+
+ when(dgsService.getExpiredPendingPurchases(block)).thenReturn(iterator);
+ doNothing().when(dgsService).changeQuantity(dgsGoods, 10);
+ doNothing().when(dgsService).setPending(any(DGSPurchase.class), anyBoolean());
+
+ this.observer.onBlockApplied(block);
+
+ verify(dgsService).getExpiredPendingPurchases(any(Block.class));
+ verify(accountService, times(1)).getAccount(anyLong());
+ verify(accountService, times(1)).addToUnconfirmedBalanceATM(
+ account, LedgerEvent.DIGITAL_GOODS_PURCHASE_EXPIRED,
+ 1L, 1200L);
+ verify(dgsService).getGoods(1L);
+ }
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/PollObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/PollObserverTest.java
new file mode 100644
index 0000000000..1a73d25e57
--- /dev/null
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/PollObserverTest.java
@@ -0,0 +1,41 @@
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.model.Block;
+import com.apollocurrency.aplwallet.apl.core.service.state.PollService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@ExtendWith(MockitoExtension.class)
+class PollObserverTest {
+
+ @Mock
+ PollService pollService;
+ private PollObserver observer;
+
+ @BeforeEach
+ void setUp() {
+ this.observer = new PollObserver(pollService);
+ }
+
+ @Test
+ void onBlockApplied() {
+ Block block = mock(Block.class);
+ when(block.getHeight()).thenReturn(1000).thenReturn(1000).thenReturn(1000);
+ doNothing().when(pollService).checkPolls(1000);
+// when(pollService.checkPolls(block.getHeight());
+
+ this.observer.onBlockApplied(block);
+
+ verify(pollService).checkPolls(block.getHeight());
+ }
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/TrimObserverScheduleLogicTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/TrimObserverScheduleLogicTest.java
index e69de29bb2..f10a4cfa62 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/TrimObserverScheduleLogicTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/app/observer/TrimObserverScheduleLogicTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright Ā© 2018-2019 Apollo Foundation
+ */
+
+package com.apollocurrency.aplwallet.apl.core.app.observer;
+
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEvent;
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEventBinding;
+import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEventType;
+import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
+import com.apollocurrency.aplwallet.apl.core.chainid.HeightConfig;
+import com.apollocurrency.aplwallet.apl.core.model.Block;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TrimService;
+import com.apollocurrency.aplwallet.apl.core.service.blockchain.Blockchain;
+import com.apollocurrency.aplwallet.apl.util.Constants;
+import com.apollocurrency.aplwallet.apl.util.injectable.PropertiesHolder;
+import lombok.extern.slf4j.Slf4j;
+import org.jboss.weld.junit.MockBean;
+import org.jboss.weld.junit5.EnableWeld;
+import org.jboss.weld.junit5.WeldInitiator;
+import org.jboss.weld.junit5.WeldSetup;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.parallel.Execution;
+import org.junit.jupiter.api.parallel.ExecutionMode;
+import org.mockito.Mockito;
+
+import jakarta.enterprise.event.Event;
+import jakarta.enterprise.util.AnnotationLiteral;
+import jakarta.inject.Inject;
+import java.util.List;
+import java.util.Optional;
+import java.util.Random;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@Slf4j
+@EnableWeld
+@Execution(ExecutionMode.CONCURRENT)
+class TrimObserverScheduleLogicTest {
+ TrimService trimService = mock(TrimService.class);
+ BlockchainConfig blockchainConfig = Mockito.mock(BlockchainConfig.class);
+ PropertiesHolder propertiesHolder = mock(PropertiesHolder.class);
+ HeightConfig config = Mockito.mock(HeightConfig.class);
+ TrimConfig trimConfig = Mockito.mock(TrimConfig.class);
+ Random random = new Random();
+ Blockchain blockchain = mock(Blockchain.class);
+ @WeldSetup
+ WeldInitiator weld = WeldInitiator.from(TrimObserver.class)
+ .addBeans(MockBean.of(trimService, TrimService.class))
+ .addBeans(MockBean.of(blockchainConfig, BlockchainConfig.class))
+ .addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
+ .addBeans(MockBean.of(random, Random.class))
+ .addBeans(MockBean.of(blockchain, Blockchain.class))
+ .addBeans(MockBean.of(trimConfig, TrimConfig.class))
+ .build();
+ TrimObserver observer;
+
+ {
+ doReturn(config).when(blockchainConfig).getCurrentConfig();
+ doReturn(100).when(propertiesHolder).getIntProperty("apl.trimProcessingDelay", 2000);
+ }
+
+ @BeforeEach
+ void setUp() {
+ observer = new TrimObserver(this.trimService, this.trimConfig, this.blockchain);
+ }
+
+ @Test
+ void testOnBlockPushedOne() {
+ when(trimConfig.getTrimFrequency()).thenReturn(5000);
+ Block block = mock(Block.class);
+ when(block.getHeight()).thenReturn(5000);
+
+ observer.onBlockPushed(block);
+ observer.onBlockPushed(block);
+ List generatedTrimHeights = observer.getTrimQueue();
+ assertEquals(2, generatedTrimHeights.size());
+ }
+
+ @Test
+ void testOnBlockPushedTwo() {
+ when(trimConfig.getTrimFrequency()).thenReturn(5000).thenReturn(6000);
+ Block block = mock(Block.class);
+ when(block.getHeight()).thenReturn(5000).thenReturn(6000);
+
+ observer.onBlockPushed(block);
+ observer.onBlockPushed(block);
+ List generatedTrimHeights = observer.getTrimQueue();
+ assertEquals(2, generatedTrimHeights.size());
+ }
+
+}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerBaseTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerBaseTest.java
index 6d7be125c8..d5bd3f417c 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerBaseTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerBaseTest.java
@@ -6,6 +6,8 @@
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.junit.jupiter.Container;
+import static com.apollocurrency.aplwallet.apl.core.dao.MariaDBConfigs.DOCKER_IMAGE_NAME_VERSION;
+
/**
* An attempt to reuse existing container for multiple tests.
*/
@@ -16,7 +18,7 @@ public abstract class DbContainerBaseTest {
public static final GenericContainer mariaDBContainer;
static {
- mariaDBContainer = new MariaDBContainer("mariadb:10.5")
+ mariaDBContainer = new MariaDBContainer(DOCKER_IMAGE_NAME_VERSION)
.withDatabaseName("testdb")
.withUsername("testuser")
.withPassword("testpass")
@@ -25,9 +27,12 @@ public abstract class DbContainerBaseTest {
.withNetwork(null)
.withLabel("com.apollocurrency.aplwallet.apl", "testcontainer")
.withLogConsumer(new Slf4jLogConsumer(log))
- .withCommand(MariaDBConfigs.getEnvs());
+ .withCommand(MariaDBConfigs.getEnvs())
+ ;
mariaDBContainer.start();
+
Runtime.getRuntime().addShutdownHook(new Thread(mariaDBContainer::stop));
}
+
}
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DBContainerRootTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerRootUserTest.java
similarity index 87%
rename from apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DBContainerRootTest.java
rename to apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerRootUserTest.java
index fa6e52ad5c..1c6978c5f3 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DBContainerRootTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/DbContainerRootUserTest.java
@@ -7,13 +7,13 @@
import org.testcontainers.junit.jupiter.Container;
@Slf4j
-public abstract class DBContainerRootTest {
+public abstract class DbContainerRootUserTest {
@Container
public static final GenericContainer mariaDBContainer;
static {
- mariaDBContainer = new MariaDBContainer("mariadb:10.5")
+ mariaDBContainer = new MariaDBContainer(MariaDBConfigs.DOCKER_IMAGE_NAME_VERSION)
.withDatabaseName("testdb")
.withUsername("root")
.withPassword("rootpass")
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/JdbcQueryExecutionHelperTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/JdbcQueryExecutionHelperTest.java
index a738ab511d..08748a56fd 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/JdbcQueryExecutionHelperTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/JdbcQueryExecutionHelperTest.java
@@ -19,8 +19,9 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+
@Tag("slow")
-class JdbcQueryExecutionHelperTest extends DBContainerRootTest{
+class JdbcQueryExecutionHelperTest extends DbContainerRootUserTest {
@RegisterExtension
static DbExtension dbExtension = new DbExtension(mariaDBContainer);
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/MariaDBConfigs.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/MariaDBConfigs.java
index f5fc74676d..b55941c7d3 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/MariaDBConfigs.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/MariaDBConfigs.java
@@ -2,6 +2,8 @@
public class MariaDBConfigs {
+ public static final String DOCKER_IMAGE_NAME_VERSION = "mariadb:10.11";
+
private static String[] envs;
static {
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/BlockIndexDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/BlockIndexDaoTest.java
index 57d18e4bee..1e5cdcaf01 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/BlockIndexDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/BlockIndexDaoTest.java
@@ -78,7 +78,7 @@ public class BlockIndexDaoTest extends DbContainerBaseTest {
TransactionDaoImpl.class, JdbiHandleFactory.class, JdbiConfiguration.class)
.addBeans(MockBean.of(dbExtension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ReferencedTransactionDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ReferencedTransactionDaoTest.java
index 13d664b426..22fb6639e0 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ReferencedTransactionDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ReferencedTransactionDaoTest.java
@@ -128,7 +128,7 @@ class ReferencedTransactionDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(PrunableMessageService.class), PrunableMessageService.class, PrunableMessageServiceImpl.class))
.addBeans(MockBean.of(mock(AccountService.class), AccountService.class, AccountServiceImpl.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(CurrencyService.class), CurrencyService.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardDaoTest.java
index 5df74ba6c2..329bc7d48a 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardDaoTest.java
@@ -95,7 +95,7 @@ class ShardDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(extension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardRecoveryDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardRecoveryDaoTest.java
index ae3026501d..b19f00edcc 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardRecoveryDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/ShardRecoveryDaoTest.java
@@ -87,7 +87,7 @@ class ShardRecoveryDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.build();
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/TransactionIndexDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/TransactionIndexDaoTest.java
index 02a791ffd4..a4d6eeadae 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/TransactionIndexDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/appdata/TransactionIndexDaoTest.java
@@ -87,7 +87,7 @@ public class TransactionIndexDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(dbExtension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/DataTagDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/DataTagDaoTest.java
index 47306a6704..b1ea027bc2 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/DataTagDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/DataTagDaoTest.java
@@ -108,7 +108,7 @@ class DataTagDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
.build();
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/PrunableMessageTableTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/PrunableMessageTableTest.java
index b170781d35..1f96b34c2c 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/PrunableMessageTableTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/prunable/PrunableMessageTableTest.java
@@ -59,7 +59,7 @@ class PrunableMessageTableTest extends DbContainerBaseTest {
FullTextConfigImpl.class)
.addBeans(MockBean.of(extension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
.build();
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/ShardRecoveryDaoJdbcTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/ShardRecoveryDaoJdbcTest.java
index f2ddc0cfa0..0a0e819e45 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/ShardRecoveryDaoJdbcTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/derived/ShardRecoveryDaoJdbcTest.java
@@ -4,11 +4,13 @@
package com.apollocurrency.aplwallet.apl.core.dao.state.derived;
+import com.apollocurrency.aplwallet.apl.core.config.TimeConfig;
import com.apollocurrency.aplwallet.apl.core.dao.DbContainerBaseTest;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.ShardRecoveryDaoJdbc;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.impl.ShardRecoveryDaoJdbcImpl;
import com.apollocurrency.aplwallet.apl.core.db.DatabaseManager;
import com.apollocurrency.aplwallet.apl.core.entity.appdata.ShardRecovery;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TimeService;
import com.apollocurrency.aplwallet.apl.core.service.appdata.impl.TimeServiceImpl;
import com.apollocurrency.aplwallet.apl.core.shard.MigrateState;
import com.apollocurrency.aplwallet.apl.extension.DbExtension;
@@ -45,11 +47,16 @@ class ShardRecoveryDaoJdbcTest extends DbContainerBaseTest {
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer);
+ TimeConfig config = new TimeConfig(false);
+ TimeService timeService = new TimeServiceImpl(config.timeSource());
+
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(
- PropertiesHolder.class, ShardRecoveryDaoJdbcImpl.class, TimeServiceImpl.class)
+ PropertiesHolder.class, ShardRecoveryDaoJdbcImpl.class)
.addBeans(MockBean.of(extension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(mock(NtpTime.class), NtpTime.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
+ .addBeans(MockBean.of(timeService, TimeService.class))
.build();
private Connection connection;
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDataTableTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDataTableTest.java
index 2aa7e960e3..eec7beecee 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDataTableTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDataTableTest.java
@@ -5,7 +5,7 @@
package com.apollocurrency.aplwallet.apl.core.dao.state.shuffling;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.dao.state.keyfactory.LongKey;
import com.apollocurrency.aplwallet.apl.data.DbTestData;
import com.apollocurrency.aplwallet.apl.data.ShufflingTestData;
@@ -22,8 +22,9 @@
import static org.junit.jupiter.api.Assertions.assertArrayEquals;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
+
@Tag("slow")
-class ShufflingDataTableTest extends DBContainerRootTest {
+class ShufflingDataTableTest extends DbContainerRootUserTest {
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer, DbTestData.getInMemDbProps(), "db/shuffling.sql", null);
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDbRepositoryTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDbRepositoryTest.java
index 1860f775fa..50afaf3b70 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDbRepositoryTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingDbRepositoryTest.java
@@ -4,7 +4,7 @@
package com.apollocurrency.aplwallet.apl.core.dao.state.shuffling;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.entity.state.shuffling.Shuffling;
import com.apollocurrency.aplwallet.apl.core.entity.state.shuffling.ShufflingStage;
import com.apollocurrency.aplwallet.apl.data.DbTestData;
@@ -28,11 +28,11 @@
public class ShufflingDbRepositoryTest extends ShufflingRepositoryTest {
@BeforeAll
static void beforeAll() {
- log.info("Connect to the db using {}", DBContainerRootTest.class);
+ log.info("Connect to the db using {}", DbContainerRootUserTest.class);
}
@RegisterExtension
- static DbExtension extension = new DbExtension(DBContainerRootTest.mariaDBContainer, DbTestData.getInMemDbProps(), "db/shuffling.sql", null);
+ static DbExtension extension = new DbExtension(DbContainerRootUserTest.mariaDBContainer, DbTestData.getInMemDbProps(), "db/shuffling.sql", null);
@Override
public ShufflingTable createRepository() {
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingParticipantTableTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingParticipantTableTest.java
index f2836bbb7b..434b6bbd76 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingParticipantTableTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/shuffling/ShufflingParticipantTableTest.java
@@ -4,7 +4,7 @@
package com.apollocurrency.aplwallet.apl.core.dao.state.shuffling;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.dao.state.keyfactory.LinkKey;
import com.apollocurrency.aplwallet.apl.core.entity.state.shuffling.ShufflingParticipant;
import com.apollocurrency.aplwallet.apl.data.DbTestData;
@@ -24,7 +24,7 @@
import static org.mockito.Mockito.mock;
@Tag("slow")
-public class ShufflingParticipantTableTest extends DBContainerRootTest {
+public class ShufflingParticipantTableTest extends DbContainerRootUserTest {
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer, DbTestData.getInMemDbProps(), "db/shuffling.sql", null);
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractEventLogTableTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractEventLogTableTest.java
index b4ee5a4bb2..b2c15ce633 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractEventLogTableTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractEventLogTableTest.java
@@ -22,6 +22,7 @@
import lombok.extern.slf4j.Slf4j;
import org.jboss.weld.junit.MockBean;
import org.jboss.weld.junit5.EnableWeld;
+import org.jboss.weld.junit5.ExplicitParamInjection;
import org.jboss.weld.junit5.WeldInitiator;
import org.jboss.weld.junit5.WeldSetup;
import org.junit.jupiter.api.AfterEach;
@@ -48,6 +49,7 @@
@Slf4j
@Tag("slow")
@EnableWeld
+@ExplicitParamInjection
class SmcContractEventLogTableTest extends DbContainerBaseTest {
@RegisterExtension
static TemporaryFolderExtension temporaryFolderExtension = new TemporaryFolderExtension();
@@ -122,11 +124,11 @@ void getEntries() {
assertEquals(4, actual.size());
}
- @CsvSource(delimiterString = ":", value = {
- "Buy:0:-1:4",
- "Transfer:0:-1:10",
- "Transfer:100:-1:9",
- "Transfer:100:10000:8"
+ @CsvSource(value = {
+ "Buy,0,-1,4",
+ "Transfer,0,-1,10",
+ "Transfer,100,-1,9",
+ "Transfer,100,10000,8"
})
@ParameterizedTest
void getEventsByFilter(String name, Integer heightFrom, Integer heightTo, Integer num) {
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractTableTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractTableTest.java
index 92abcac779..7dbcbd24c7 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractTableTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/smc/SmcContractTableTest.java
@@ -32,6 +32,7 @@
import lombok.extern.slf4j.Slf4j;
import org.jboss.weld.junit.MockBean;
import org.jboss.weld.junit5.EnableWeld;
+import org.jboss.weld.junit5.ExplicitParamInjection;
import org.jboss.weld.junit5.WeldInitiator;
import org.jboss.weld.junit5.WeldSetup;
import org.junit.jupiter.api.AfterEach;
@@ -64,6 +65,7 @@
@Slf4j
@Tag("slow")
@EnableWeld
+@ExplicitParamInjection
class SmcContractTableTest extends DbContainerBaseTest {
@RegisterExtension
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/tagged/TaggedDataTimestampDaoTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/tagged/TaggedDataTimestampDaoTest.java
index e1a4bc5db4..a521101180 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/tagged/TaggedDataTimestampDaoTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/dao/state/tagged/TaggedDataTimestampDaoTest.java
@@ -105,11 +105,10 @@ class TaggedDataTimestampDaoTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(AliasService.class), AliasService.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(ttd.getTransactionTypeFactory(), TransactionTypeFactory.class))
- .addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
.build();
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/db/DatabaseManagerTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/db/DatabaseManagerTest.java
index d0cd15382a..0283a180f3 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/db/DatabaseManagerTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/db/DatabaseManagerTest.java
@@ -4,7 +4,7 @@
package com.apollocurrency.aplwallet.apl.core.db;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.shard.ShardManagement;
import com.apollocurrency.aplwallet.apl.data.DbTestData;
import com.apollocurrency.aplwallet.apl.db.updater.ShardAllScriptsDBUpdater;
@@ -57,7 +57,7 @@
@Slf4j
@Tag("slow")
@ExtendWith(MockitoExtension.class)
-class DatabaseManagerTest extends DBContainerRootTest {
+class DatabaseManagerTest extends DbContainerRootUserTest {
private static PropertiesHolder propertiesHolder = new PropertiesHolder();
private DbProperties baseDbProperties;
private DatabaseManagerImpl databaseManager;
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/rest/endpoint/AccountEndpointTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/rest/endpoint/AccountEndpointTest.java
deleted file mode 100644
index 0b80831896..0000000000
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/rest/endpoint/AccountEndpointTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright Ā© 2018-2020 Apollo Foundation
- */
-
-package com.apollocurrency.aplwallet.apl.core.rest.endpoint;
-
-import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
-import com.apollocurrency.aplwallet.apl.core.config.PropertyProducer;
-import com.apollocurrency.aplwallet.apl.core.entity.state.order.AskOrder;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.Account2FAConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.Account2FADetailsConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.AccountAssetConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.AccountConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.AccountCurrencyConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.converter.BlockConverter;
-import com.apollocurrency.aplwallet.apl.core.rest.filters.Secured2FAInterceptor;
-import com.apollocurrency.aplwallet.apl.core.rest.service.AccountStatisticsService;
-import com.apollocurrency.aplwallet.apl.core.rest.utils.FirstLastIndexParser;
-import com.apollocurrency.aplwallet.apl.core.service.blockchain.Blockchain;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountAssetService;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountCurrencyService;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountPublicKeyService;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountService;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.impl.AccountAssetServiceImpl;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.impl.AccountCurrencyServiceImpl;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.impl.AccountPublicKeyServiceImpl;
-import com.apollocurrency.aplwallet.apl.core.service.state.account.impl.AccountServiceImpl;
-import com.apollocurrency.aplwallet.apl.core.service.state.order.OrderService;
-import com.apollocurrency.aplwallet.apl.core.service.state.order.impl.AskOrderServiceImpl;
-import com.apollocurrency.aplwallet.apl.core.service.state.qualifier.AskOrderService;
-import com.apollocurrency.aplwallet.apl.core.transaction.messages.CCAskOrderPlacementAttachment;
-import com.apollocurrency.aplwallet.apl.util.env.dirprovider.DirProvider;
-import com.apollocurrency.aplwallet.apl.util.injectable.PropertiesHolder;
-import com.apollocurrency.aplwallet.apl.util.service.ElGamalEncryptor;
-import com.apollocurrency.aplwallet.apl.util.service.TaskDispatchManager;
-import com.apollocurrency.aplwallet.vault.KeyStoreService;
-import com.apollocurrency.aplwallet.vault.rest.converter.WalletKeysConverter;
-import com.apollocurrency.aplwallet.vault.service.auth.Account2FAService;
-import com.apollocurrency.aplwallet.vault.service.auth.TwoFactorAuthService;
-import com.apollocurrency.aplwallet.vault.service.auth.TwoFactorAuthServiceImpl;
-import lombok.Setter;
-import org.jboss.resteasy.mock.MockHttpRequest;
-import org.jboss.resteasy.mock.MockHttpResponse;
-import org.jboss.weld.junit.MockBean;
-import org.jboss.weld.junit5.EnableWeld;
-import org.jboss.weld.junit5.WeldInitiator;
-import org.jboss.weld.junit5.WeldSetup;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.params.ParameterizedTest;
-import org.junit.jupiter.params.provider.ValueSource;
-
-import jakarta.inject.Inject;
-import java.io.IOException;
-import java.net.URISyntaxException;
-
-import static org.jboss.resteasy.mock.MockHttpRequest.post;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-
-@EnableWeld
-@Disabled
-class AccountEndpointTest extends AbstractEndpointTest {
-
- private static final String PASSPHRASE = "123456";
-
- ElGamalEncryptor elGamal = new ElGamalEncryptor(mock(TaskDispatchManager.class));
-
- TwoFactorAuthService twoFactorAuthService = mock(TwoFactorAuthService.class);
-
- OrderService orderService = mock(AskOrderServiceImpl.class);
-
- @WeldSetup
- public WeldInitiator weld = WeldInitiator.from(
- PropertiesHolder.class, PropertyProducer.class,
- Account2FAService.class,
- AccountController.class,
- Secured2FAInterceptor.class,
- FirstLastIndexParser.class
- )
- .addBeans(MockBean.of(blockchain, Blockchain.class))
- .addBeans(MockBean.of(elGamal, ElGamalEncryptor.class))
- .addBeans(MockBean.of(twoFactorAuthService, TwoFactorAuthService.class, TwoFactorAuthServiceImpl.class))
- .addBeans(MockBean.of(mock(DirProvider.class), DirProvider.class))
- .addBeans(MockBean.of(mock(KeyStoreService.class), KeyStoreService.class))
- .addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
- .addBeans(MockBean.of(mock(AccountService.class), AccountService.class, AccountServiceImpl.class))
- .addBeans(MockBean.of(mock(AccountPublicKeyService.class), AccountPublicKeyService.class, AccountPublicKeyServiceImpl.class))
- .addBeans(MockBean.of(mock(AccountAssetService.class), AccountAssetService.class, AccountAssetServiceImpl.class))
- .addBeans(MockBean.of(mock(AccountCurrencyService.class), AccountCurrencyService.class, AccountCurrencyServiceImpl.class))
- .addBeans(MockBean.of(mock(AccountAssetConverter.class), AccountAssetConverter.class))
- .addBeans(MockBean.of(mock(AccountCurrencyConverter.class), AccountCurrencyConverter.class))
- .addBeans(MockBean.of(mock(AccountConverter.class), AccountConverter.class))
- .addBeans(MockBean.of(mock(BlockConverter.class), BlockConverter.class))
- .addBeans(MockBean.of(mock(WalletKeysConverter.class), WalletKeysConverter.class))
- .addBeans(MockBean.of(mock(Account2FADetailsConverter.class), Account2FADetailsConverter.class))
- .addBeans(MockBean.of(mock(Account2FAConverter.class), Account2FAConverter.class))
- .addBeans(MockBean.builder().types(AskOrderServiceImpl.class).creating(orderService).addQualifier(AskOrderService.Literal.INSTANCE).build())
- .addBeans(MockBean.of(mock(AccountStatisticsService.class), AccountStatisticsService.class))
- .build();
-
- @Inject
- @Setter
- private AccountController endpoint;
-
- @Inject
- private Secured2FAInterceptor secured2FAInterceptor;
-
- @BeforeEach
- void setUp() {
- super.setUp();
-
- dispatcher.getRegistry().addSingletonResource(endpoint);
- dispatcher.getProviderFactory().getContainerRequestFilterRegistry().registerSingleton(secured2FAInterceptor);
- }
-
- @AfterEach
- void tearDown() {
-
- }
-
- @ParameterizedTest(name = "{index} url={arguments}")
- @ValueSource(strings = {"/accounts/disable2fa", "/accounts/confirm2fa", "/accounts/delete-key"})
- public void check2FA_withoutMandatoryParameters_thenGetError_2002(String uri) throws URISyntaxException, IOException {
- MockHttpRequest request = post(uri);
- MockHttpResponse response = sendPostRequest(request, "wrong=value");
-
- checkMandatoryParameterMissingErrorCode(response, 2002);
- }
-
- @ParameterizedTest(name = "{index} url={arguments}")
- @ValueSource(strings = {"/accounts/disable2fa", "/accounts/confirm2fa"})
- public void check2FA_withBothSecretPhraseAndPassPhrase_thenGetError_2011(String uri) throws URISyntaxException, IOException {
- MockHttpRequest request = post(uri);
- MockHttpResponse response = sendPostRequest(request, "passphrase=" + PASSPHRASE + "&secretPhrase=" + SECRET + "&code2FA=" + CODE_2FA);
-
- checkMandatoryParameterMissingErrorCode(response, 2011);
- }
-
- @ParameterizedTest(name = "{index} url={arguments}")
- @ValueSource(strings = {"/accounts/disable2fa", "/accounts/confirm2fa", "/accounts/delete-key"})
- public void check2FA_withoutMandatoryParameter_Code2FA_thenGetError_2003(String uri) throws URISyntaxException, IOException {
- doReturn(true).when(twoFactorAuthService).isEnabled(ACCOUNT_ID_WITH_SECRET);
- MockHttpRequest request = post(uri);
- MockHttpResponse response = sendPostRequest(request, "secretPhrase=" + SECRET);
-
- checkMandatoryParameterMissingErrorCode(response, 2003);
- }
-
-}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserverTest.java
deleted file mode 100644
index ae4d39ad22..0000000000
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/appdata/DeleteTrimObserverTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright Ā© 2018-2019 Apollo Foundation
- */
-package com.apollocurrency.aplwallet.apl.core.service.appdata;
-
-import com.apollocurrency.aplwallet.apl.core.app.observer.events.TrimEvent;
-import com.apollocurrency.aplwallet.apl.core.db.DatabaseManager;
-import com.apollocurrency.aplwallet.apl.core.service.fulltext.FullTextOperationData;
-import com.apollocurrency.aplwallet.apl.util.db.TransactionalDataSource;
-import com.apollocurrency.aplwallet.apl.core.shard.observer.DeleteOnTrimData;
-import com.apollocurrency.aplwallet.apl.util.ThreadUtils;
-import com.apollocurrency.aplwallet.apl.util.injectable.PropertiesHolder;
-import org.jboss.weld.junit.MockBean;
-import org.jboss.weld.junit5.EnableWeld;
-import org.jboss.weld.junit5.WeldInitiator;
-import org.jboss.weld.junit5.WeldSetup;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.Timeout;
-
-import jakarta.enterprise.event.Event;
-import jakarta.enterprise.util.AnnotationLiteral;
-import jakarta.inject.Inject;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.util.Collections;
-import java.util.Set;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.anyLong;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-@Disabled
-@Deprecated
-class DeleteTrimObserverTest {
- DatabaseManager databaseManager = mock(DatabaseManager.class);
- PropertiesHolder propertiesHolder = mock(PropertiesHolder.class);
-
- @WeldSetup
- WeldInitiator weld = WeldInitiator.from(DeleteTrimObserver.class)
- .addBeans(MockBean.of(databaseManager, DatabaseManager.class))
- .addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .build();
-
- @Inject
- Event trimEvent;
- @Inject
- DeleteTrimObserver observer;
- @Inject
- Event fullTextOperationDataEvent;
-
- @BeforeEach
- void setUp() {
- doReturn(10).when(propertiesHolder).BATCH_COMMIT_SIZE();
- }
-
- @Test
- void sendResetEvent() {
- trimEvent.select(new AnnotationLiteral() {})
- .fireAsync(new DeleteOnTrimData(true, Collections.emptySet(), "null"));
- assertEquals(0, observer.getDeleteOnTrimDataQueue().size());
- }
-
- @Test
- @Timeout(value = 20)
- void sendDeleteEvent() {
- assertNotNull(observer);
- trimEvent.select(new AnnotationLiteral() {})
- .fireAsync(new DeleteOnTrimData(false, Collections.emptySet(), "some_table"));
- while (true) {
- int size = observer.getDeleteOnTrimDataQueueSize();
- if (size == 1) {
- break;
- }
- ThreadUtils.sleep(100);
- }
- }
-
- @Test
- void doNotPerformTrimOnIncorrectData() {
- long result = observer.performOneTableDelete(null);
- assertEquals(0, result);
-
- DeleteOnTrimData set1 = new DeleteOnTrimData(true, null, "null");
- result = observer.performOneTableDelete(set1);
- assertEquals(0, result);
-
- DeleteOnTrimData set2 = new DeleteOnTrimData(true, Collections.emptySet(), "null");
- result = observer.performOneTableDelete(set2);
- assertEquals(0, result);
- }
-
- @Test
- void performDelete() throws Exception {
- TransactionalDataSource dataSource = mock(TransactionalDataSource.class);
- doReturn(true).when(dataSource).isInTransaction();
- doNothing().when(dataSource).commit(false);
- doReturn(dataSource).when(databaseManager).getDataSource();
-
- Connection con = mock(Connection.class);
- doReturn(con).when(dataSource).getConnection();
- PreparedStatement preparedStatement = mock(PreparedStatement.class);
- doReturn(preparedStatement).when(con).prepareStatement(anyString());
- doNothing().doNothing().when(preparedStatement).setLong(anyInt(), anyLong());
- observer = new DeleteTrimObserver(databaseManager, propertiesHolder, fullTextOperationDataEvent);
-
- DeleteOnTrimData delete = new DeleteOnTrimData(true, Set.of(1739068987193023818L, 9211698109297098287L), "account");
- observer.performOneTableDelete(delete);
-
- verify(dataSource).commit(false);
- verify(preparedStatement, times(2)).executeUpdate();
- }
-}
\ No newline at end of file
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainTest.java
index a766464f4a..c19a167c00 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/blockchain/BlockchainTest.java
@@ -4,6 +4,7 @@
package com.apollocurrency.aplwallet.apl.core.service.blockchain;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.model.Block;
import com.apollocurrency.aplwallet.apl.core.model.EcBlockData;
import com.apollocurrency.aplwallet.apl.core.model.Sort;
@@ -19,7 +20,6 @@
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionEntityToModelConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionModelToEntityConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TxReceiptRowMapper;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.TransactionIndexDao;
import com.apollocurrency.aplwallet.apl.core.dao.blockchain.BlockDaoImpl;
import com.apollocurrency.aplwallet.apl.core.dao.blockchain.TransactionDaoImpl;
@@ -101,7 +101,7 @@
@Tag("slow")
@EnableWeld
@Slf4j
-class BlockchainTest extends DBContainerRootTest {
+class BlockchainTest extends DbContainerRootUserTest {
static DbExtension extension;// init later in manual mode
static DbPopulator shard1Populator;
static DbPopulator shard2Populator;
@@ -795,9 +795,6 @@ void testHasTransactionByFullHashWithHeightInIndex() {
assertTrue(hasTransaction);
}
-
- // COMMENTED OUT tests because they still creates Weld container and do not shutdown it!!!
-// @Disabled // doesn't work, but creates additional Weld container which it not shutdown later
@Test
void testHasTransactionByFullHashBytesWhenHeightOfTransactionIsGreaterThanRequestedHeight() {
boolean hasTransaction = blockchain.hasTransactionByFullHash(txd.TRANSACTION_7.getFullHash(), 0);
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/fulltext/FullTextSearchServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/fulltext/FullTextSearchServiceTest.java
index 467947cab5..80ebde21f0 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/fulltext/FullTextSearchServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/fulltext/FullTextSearchServiceTest.java
@@ -98,7 +98,7 @@ class FullTextSearchServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(extension.getFullTextSearchService(), FullTextSearchService.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/prunable/PrunableMessageServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/prunable/PrunableMessageServiceTest.java
index f7a4ed61fc..0bd175b15c 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/prunable/PrunableMessageServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/prunable/PrunableMessageServiceTest.java
@@ -83,7 +83,7 @@ class PrunableMessageServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(TaskDispatchManager.class), TaskDispatchManager.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.build();
@Inject
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSObserverTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSObserverTest.java
index 0b0a8f131c..95f8fa74f3 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSObserverTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSObserverTest.java
@@ -10,7 +10,9 @@
import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEvent;
import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEventBinding;
import com.apollocurrency.aplwallet.apl.core.app.observer.events.BlockEventType;
+import com.apollocurrency.aplwallet.apl.core.config.TimeConfig;
import com.apollocurrency.aplwallet.apl.core.model.Block;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TimeService;
import com.apollocurrency.aplwallet.apl.core.service.blockchain.TransactionBuilderFactory;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
import com.apollocurrency.aplwallet.apl.core.config.DaoConfig;
@@ -90,6 +92,8 @@ public class DGSObserverTest extends DbContainerBaseTest {
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer);
Blockchain blockchain = mock(Blockchain.class);
+ TimeConfig config = new TimeConfig(false);
+ TimeService timeService = new TimeServiceImpl(config.timeSource());
private TransactionTestData td = new TransactionTestData();
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(
@@ -106,7 +110,7 @@ public class DGSObserverTest extends DbContainerBaseTest {
DGSServiceImpl.class,
DGSObserver.class,
DerivedDbTablesRegistryImpl.class,
- TimeServiceImpl.class, BlockDaoImpl.class,
+ BlockDaoImpl.class,
BlockEntityRowMapper.class, BlockEntityToModelConverter.class, BlockModelToEntityConverter.class,
TransactionDaoImpl.class,
BlockChainInfoServiceImpl.class, AccountServiceImpl.class, GenesisAccounts.class, JdbiHandleFactory.class, JdbiConfiguration.class)
@@ -126,6 +130,8 @@ public class DGSObserverTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
+ .addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(new AccountTable(extension.getDatabaseManager(), mock(Event.class)), AccountTableInterface.class))
.build();
@Inject
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSServiceTest.java
index 021eabcd03..80fd813471 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/DGSServiceTest.java
@@ -8,6 +8,7 @@
import com.apollocurrency.aplwallet.apl.core.app.GenesisAccounts;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
import com.apollocurrency.aplwallet.apl.core.config.JdbiConfiguration;
+import com.apollocurrency.aplwallet.apl.core.config.TimeConfig;
import com.apollocurrency.aplwallet.apl.core.dao.DbContainerBaseTest;
import com.apollocurrency.aplwallet.apl.core.dao.state.account.AccountGuaranteedBalanceTable;
import com.apollocurrency.aplwallet.apl.core.dao.state.account.AccountTable;
@@ -27,6 +28,7 @@
import com.apollocurrency.aplwallet.apl.core.entity.state.dgs.DGSTag;
import com.apollocurrency.aplwallet.apl.core.model.Block;
import com.apollocurrency.aplwallet.apl.core.model.Transaction;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TimeService;
import com.apollocurrency.aplwallet.apl.core.service.appdata.impl.TimeServiceImpl;
import com.apollocurrency.aplwallet.apl.core.service.blockchain.Blockchain;
import com.apollocurrency.aplwallet.apl.core.service.blockchain.BlockchainProcessor;
@@ -102,13 +104,14 @@ public class DGSServiceTest extends DbContainerBaseTest {
@RegisterExtension
DbExtension extension = new DbExtension(mariaDBContainer, DbTestData.getDbUrlProps(), "db/dgs-data.sql", "db/schema.sql");
+ TimeConfig config = new TimeConfig(false);
+ TimeService timeService = new TimeServiceImpl(config.timeSource());
Blockchain blockchain = mock(Blockchain.class);
AccountTable accountTable = new AccountTable(extension.getDatabaseManager(), mock(Event.class));
@WeldSetup
public WeldInitiator weld = WeldInitiator.from(
PropertiesHolder.class,
- TimeServiceImpl.class,
GlobalSyncImpl.class,
FullTextConfigImpl.class,
DGSPublicFeedbackTable.class,
@@ -134,6 +137,8 @@ public class DGSServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(AccountLedgerService.class), AccountLedgerService.class, AccountLedgerServiceImpl.class))
.addBeans(MockBean.of(mock(FullTextSearchUpdater.class), FullTextSearchUpdater.class, FullTextSearchUpdaterImpl.class))
.addBeans(MockBean.of(mock(BlockchainConfig.class), BlockchainConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
+ .addBeans(MockBean.of(timeService, TimeService.class))
.build();
Block lastBlock = mock(Block.class);
Block prevBlock = mock(Block.class);
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/PhasingPollServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/PhasingPollServiceTest.java
index 088fb1c848..4b8fe54f5d 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/PhasingPollServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/PhasingPollServiceTest.java
@@ -164,7 +164,7 @@ public class PhasingPollServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(AliasService.class), AliasService.class))
.addBeans(MockBean.of(blockDao, BlockDao.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(ttd.getTransactionTypeFactory(), TransactionTypeFactory.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/ReferencedTransactionServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/ReferencedTransactionServiceTest.java
index da6903cc9d..eb562c8471 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/ReferencedTransactionServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/ReferencedTransactionServiceTest.java
@@ -4,6 +4,8 @@
package com.apollocurrency.aplwallet.apl.core.service.state;
+import com.apollocurrency.aplwallet.apl.core.config.TimeConfig;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TimeService;
import com.apollocurrency.aplwallet.apl.core.service.blockchain.TransactionBuilderFactory;
import com.apollocurrency.aplwallet.apl.core.model.TransactionImpl;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
@@ -77,6 +79,8 @@ public class ReferencedTransactionServiceTest extends DbContainerBaseTest {
static TemporaryFolderExtension temporaryFolderExtension = new TemporaryFolderExtension();
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer, DbTestData.getDbFileProperties(createPath("targetDb").toAbsolutePath().toString()));
+ TimeConfig config = new TimeConfig(false);
+ TimeService timeService = new TimeServiceImpl(config.timeSource());
BlockchainConfig blockchainConfig = Mockito.mock(BlockchainConfig.class);
Chain chain = mock(Chain.class);
@@ -99,7 +103,7 @@ public class ReferencedTransactionServiceTest extends DbContainerBaseTest {
FullTextConfigImpl.class,
GlobalSyncImpl.class,
DerivedDbTablesRegistryImpl.class,
- TimeServiceImpl.class, BlockDaoImpl.class,
+ BlockDaoImpl.class,
BlockEntityRowMapper.class, BlockEntityToModelConverter.class, BlockModelToEntityConverter.class,
TransactionDaoImpl.class, ReferencedTransactionService.class, JdbiHandleFactory.class, JdbiConfiguration.class)
.addBeans(MockBean.of(extension.getDatabaseManager(), DatabaseManager.class))
@@ -113,8 +117,10 @@ public class ReferencedTransactionServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
+ .addBeans(MockBean.of(timeService, TimeService.class))
.build();
- HeightConfig config = Mockito.mock(HeightConfig.class);
+ HeightConfig heightConfig = Mockito.mock(HeightConfig.class);
@Inject
ReferencedTransactionService service;
@@ -129,13 +135,13 @@ private static Path createPath(String fileName) {
@BeforeEach
void setUp() {
- doReturn(config).when(blockchainConfig).getCurrentConfig();
+ doReturn(heightConfig).when(blockchainConfig).getCurrentConfig();
}
@Test
void testHasAllReferencedTransaction() {
TransactionTestData td = new TransactionTestData();
- doReturn(1000).when(config).getReferencedTransactionHeightSpan();
+ doReturn(1000).when(heightConfig).getReferencedTransactionHeightSpan();
boolean hasAll = service.hasAllReferencedTransactions(td.TRANSACTION_0, 1000);
assertTrue(hasAll);
@@ -144,7 +150,7 @@ void testHasAllReferencedTransaction() {
@Test
void testHasNotAllReferencedTransactionsWhenHeightIsNotEnough() {
TransactionTestData td = new TransactionTestData();
- doReturn(1000).when(config).getReferencedTransactionHeightSpan();
+ doReturn(1000).when(heightConfig).getReferencedTransactionHeightSpan();
boolean hasAll = service.hasAllReferencedTransactions(td.TRANSACTION_5, td.TRANSACTION_5.getHeight());
assertFalse(hasAll);
@@ -153,7 +159,7 @@ void testHasNotAllReferencedTransactionsWhenHeightIsNotEnough() {
@Test
void testHasNotAllReferencedTransactionsWhenTransactionHeightIsLessThanHeightOfReferencedTransactions() {
TransactionTestData td = new TransactionTestData();
- doReturn(20_000).when(config).getReferencedTransactionHeightSpan();
+ doReturn(20_000).when(heightConfig).getReferencedTransactionHeightSpan();
boolean hasAll = service.hasAllReferencedTransactions(td.TRANSACTION_11, td.TRANSACTION_11.getHeight());
assertFalse(hasAll);
@@ -161,7 +167,7 @@ void testHasNotAllReferencedTransactionsWhenTransactionHeightIsLessThanHeightOfR
@Test
void testHasNotAllReferencedTransactionWhenMaximumNumberOfReferencedTransactionsReached() {
- doReturn(20_000).when(config).getReferencedTransactionHeightSpan();
+ doReturn(20_000).when(heightConfig).getReferencedTransactionHeightSpan();
TransactionTestData td = new TransactionTestData();
boolean hasAll = service.hasAllReferencedTransactions(td.TRANSACTION_9, td.TRANSACTION_9.getHeight());
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/TaggedDataServiceTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/TaggedDataServiceTest.java
index 84537426ec..cd43ce86ca 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/TaggedDataServiceTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/service/state/TaggedDataServiceTest.java
@@ -136,7 +136,7 @@ class TaggedDataServiceTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(AccountService.class), AccountServiceImpl.class, AccountService.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(ttd.getTransactionTypeFactory(), TransactionTypeFactory.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineTest.java
index 259d22e688..9f6c54df23 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardEngineTest.java
@@ -18,7 +18,7 @@
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionEntityToModelConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionModelToEntityConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TxReceiptRowMapper;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.BlockIndexDao;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.ReferencedTransactionDao;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.ShardDao;
@@ -89,6 +89,7 @@
import com.apollocurrency.aplwallet.apl.extension.TemporaryFolderExtension;
import com.apollocurrency.aplwallet.apl.testutil.DbPopulator;
import com.apollocurrency.aplwallet.apl.testutil.DbUtils;
+import com.apollocurrency.aplwallet.apl.util.Convert2;
import com.apollocurrency.aplwallet.apl.util.FileUtils;
import com.apollocurrency.aplwallet.apl.util.Zip;
import com.apollocurrency.aplwallet.apl.util.ZipImpl;
@@ -158,7 +159,7 @@
@Slf4j
@Tag("slow")
@EnableWeld
-class ShardEngineTest extends DBContainerRootTest {
+class ShardEngineTest extends DbContainerRootUserTest {
static final String GOODS_TABLE_NAME = "goods";
static final String PHASING_POLL_TABLE_NAME = "phasing_poll";
static final String PRUNABLE_MESSAGE_TABLE_NAME = "prunable_message";
@@ -179,7 +180,11 @@ class ShardEngineTest extends DBContainerRootTest {
createPath("targetDb").toAbsolutePath().toString()), "db/shard/shard-creation-data.sql");
private final Path dataExportDirPath = createPath("targetDb");
- private final Bean dataExportDir = MockBean.of(dataExportDirPath.toAbsolutePath(), Path.class);
+ private final Bean dataExportDir = MockBean. builder()
+ .beanClass(Path.class)
+ .addQualifier(new NamedLiteral("dataExportDir"))
+ .creating(dataExportDirPath.toAbsolutePath())
+ .build();
private PropertiesHolder propertiesHolder = mock(PropertiesHolder.class);
TimeConfig config = new TimeConfig(false);
@@ -221,7 +226,6 @@ class ShardEngineTest extends DBContainerRootTest {
);
// return the same dir for both CDI components //
- dataExportDir.getQualifiers().add(new NamedLiteral("dataExportDir")); // for CsvExporter
doReturn(dataExportDirPath).when(dirProvider).getDataExportDir(); // for Zip
}
@@ -238,21 +242,18 @@ class ShardEngineTest extends DBContainerRootTest {
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
.addBeans(MockBean.of(zip, Zip.class))
.addBeans(dataExportDir)
- .addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(AccountPublicKeyService.class), AccountPublicKeyService.class, AccountPublicKeyServiceImpl.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(translator, CsvEscaperImpl.class))
-// .addBeans(MockBean.of(baseDbProperties, DbProperties.class)) // YL DO NOT REMOVE THAT PLEASE, it can be used for manual testing
.addBeans(MockBean.of(mock(AliasService.class), AliasService.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(blockchainConfig, BlockchainConfig.class))
.addBeans(MockBean.of(publicKeyDao, PublicKeyDao.class))
.addBeans(MockBean.of(mock(InMemoryCacheManager.class), InMemoryCacheManager.class))
.addBeans(MockBean.of(mock(TaskDispatchManager.class), TaskDispatchManager.class))
.build();
-
@Inject
AccountCurrencyTable accountCurrencyTable;
@Inject
@@ -291,6 +292,7 @@ class ShardEngineTest extends DBContainerRootTest {
@BeforeEach
void setUp() {
shardEngine.prepare();
+ Convert2.init("APL", 0);
}
@AfterEach
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardMigrationExecutorTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardMigrationExecutorTest.java
index 6903b2c446..17bdf97d17 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardMigrationExecutorTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/ShardMigrationExecutorTest.java
@@ -20,7 +20,7 @@
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionEntityToModelConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TransactionModelToEntityConverter;
import com.apollocurrency.aplwallet.apl.core.converter.db.TxReceiptRowMapper;
-import com.apollocurrency.aplwallet.apl.core.dao.DBContainerRootTest;
+import com.apollocurrency.aplwallet.apl.core.dao.DbContainerRootUserTest;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.BlockIndexDao;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.ReferencedTransactionDao;
import com.apollocurrency.aplwallet.apl.core.dao.appdata.ShardDao;
@@ -75,6 +75,7 @@
import com.apollocurrency.aplwallet.apl.core.shard.hash.ShardHashCalculatorImpl;
import com.apollocurrency.aplwallet.apl.core.shard.helper.CsvExporter;
import com.apollocurrency.aplwallet.apl.core.shard.helper.CsvExporterImpl;
+import com.apollocurrency.aplwallet.apl.core.shard.helper.csv.CsvEscaper;
import com.apollocurrency.aplwallet.apl.core.shard.helper.csv.CsvEscaperImpl;
import com.apollocurrency.aplwallet.apl.core.shard.model.ExcludeInfo;
import com.apollocurrency.aplwallet.apl.core.shard.model.PrevBlockData;
@@ -98,6 +99,7 @@
import lombok.extern.slf4j.Slf4j;
import org.jboss.weld.junit.MockBean;
import org.jboss.weld.junit5.EnableWeld;
+import org.jboss.weld.junit5.ExplicitParamInjection;
import org.jboss.weld.junit5.WeldInitiator;
import org.jboss.weld.junit5.WeldSetup;
import org.jboss.weld.literal.NamedLiteral;
@@ -107,6 +109,7 @@
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import org.junit.jupiter.api.io.TempDir;
import org.mockito.Mockito;
import jakarta.enterprise.inject.spi.Bean;
@@ -142,7 +145,8 @@
@Slf4j
@Tag("slow")
@EnableWeld
-class ShardMigrationExecutorTest extends DBContainerRootTest {
+@ExplicitParamInjection
+class ShardMigrationExecutorTest extends DbContainerRootUserTest {
private static final String SHA_512 = "SHA-512";
@RegisterExtension
@@ -151,8 +155,12 @@ class ShardMigrationExecutorTest extends DBContainerRootTest {
private static BlockchainConfig blockchainConfig = mock(BlockchainConfig.class);
Chain chain = mock(Chain.class);
private static HeightConfig heightConfig = mock(HeightConfig.class);
- private final Path dataExportDirPath = createPath("targetDb");
- private final Bean dataExportDir = MockBean.of(dataExportDirPath.toAbsolutePath(), Path.class);
+ private final Path dataExportDirPath = createTempPath();
+ private final Bean dataExportDir = MockBean. builder()
+ .beanClass(Path.class)
+ .addQualifier(new NamedLiteral("dataExportDir"))
+ .creating(dataExportDirPath.toAbsolutePath())
+ .build();
@RegisterExtension
static DbExtension extension = new DbExtension(mariaDBContainer);
@@ -160,11 +168,13 @@ class ShardMigrationExecutorTest extends DBContainerRootTest {
private TaskDispatchManager taskDispatchManager = mock(TaskDispatchManager.class);
private DirProvider dirProvider = mock(DirProvider.class);
- private Zip zip = new UtilComponentConfig().zip(); TimeConfig config = new TimeConfig(false);
+ private Zip zip = new UtilComponentConfig().zip();
+ TimeConfig config = new TimeConfig(false);
TimeService timeService = new TimeServiceImpl(config.timeSource());
private GeneratorService generatorService = mock(GeneratorService.class);
private TransactionTestData td = new TransactionTestData();
-
+ CsvEscaper csvEscaper = new CsvEscaperImpl();
+ CsvExporter csvExporter = new CsvExporterImpl(extension.getDatabaseManager(), dataExportDirPath, csvEscaper);
@WeldSetup
WeldInitiator weld = WeldInitiator.from(
BlockchainImpl.class, DaoConfig.class, ReferencedTransactionDao.class,
@@ -183,11 +193,11 @@ class ShardMigrationExecutorTest extends DBContainerRootTest {
PhasingPollTable.class,
FullTextConfigImpl.class,
DerivedTablesRegistry.class,
- ShardEngineImpl.class, CsvExporterImpl.class, AplAppStatus.class,
+ ShardEngineImpl.class, AplAppStatus.class,
BlockDaoImpl.class,
BlockEntityRowMapper.class, BlockEntityToModelConverter.class, BlockModelToEntityConverter.class,
TransactionDaoImpl.class, ShardMigrationExecutor.class,
- CsvEscaperImpl.class, JdbiHandleFactory.class, JdbiConfiguration.class)
+ JdbiHandleFactory.class, JdbiConfiguration.class)
.addBeans(MockBean.of(blockchainConfig, BlockchainConfig.class))
.addBeans(MockBean.of(extension.getDatabaseManager(), DatabaseManager.class))
.addBeans(MockBean.of(mock(TransactionProcessor.class), TransactionProcessor.class))
@@ -204,13 +214,15 @@ class ShardMigrationExecutorTest extends DBContainerRootTest {
.addBeans(MockBean.of(mock(PrunableMessageService.class), PrunableMessageService.class, PrunableMessageServiceImpl.class))
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(mock(AliasService.class), AliasService.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(zip, Zip.class))
.addBeans(MockBean.of(generatorService, GeneratorService.class))
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(td.getTransactionTypeFactory(), TransactionTypeFactory.class))
.addBeans(MockBean.of(mock(PublicKeyDao.class), PublicKeyDao.class))
+ .addBeans(MockBean.of(csvEscaper, CsvEscaper.class))
+ .addBeans(MockBean.of(csvExporter, CsvExporter.class))
.build();
@Inject
private ShardEngine shardEngine;
@@ -243,7 +255,6 @@ class ShardMigrationExecutorTest extends DBContainerRootTest {
{
// return the same dir for both CDI components
- dataExportDir.getQualifiers().add(new NamedLiteral("dataExportDir")); // for CsvExporter
doReturn(dataExportDirPath).when(dirProvider).getDataExportDir(); // for Zip
doReturn(chain).when(blockchainConfig).getChain();
}
@@ -270,8 +281,9 @@ void tearDown() {
}
@Test
- void executeAllOperations() throws IOException {
- doReturn(temporaryFolderExtension.newFolder("backup").toPath()).when(dirProvider).getDbDir();
+ void executeAllOperations(@TempDir Path tempPath) {
+// doReturn(tempPath.resolve("backup").toAbsolutePath()).when(dirProvider).getDbDir();
+ doReturn(tempPath).when(dirProvider).getDbDir();
int snapshotBlockHeight = 8000;
@@ -424,9 +436,9 @@ private static PropertiesHolder initPropertyHolder() {
}
- private Path createPath(String fileName) {
+ private Path createTempPath() {
try {
- return temporaryFolderExtension.newFolder().toPath().resolve(fileName);
+ return temporaryFolderExtension.newFolder().toPath();
} catch (IOException e) {
throw new RuntimeException(e.toString(), e);
}
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/hash/ShardHashCalculatorImplTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/hash/ShardHashCalculatorImplTest.java
index 386b0c0268..5e0e783a44 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/hash/ShardHashCalculatorImplTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/hash/ShardHashCalculatorImplTest.java
@@ -4,8 +4,10 @@
package com.apollocurrency.aplwallet.apl.core.shard.hash;
+import com.apollocurrency.aplwallet.apl.core.config.TimeConfig;
import com.apollocurrency.aplwallet.apl.core.model.Block;
import com.apollocurrency.aplwallet.apl.core.model.BlockImpl;
+import com.apollocurrency.aplwallet.apl.core.service.appdata.TimeService;
import com.apollocurrency.aplwallet.apl.core.service.blockchain.TransactionBuilderFactory;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
import com.apollocurrency.aplwallet.apl.core.chainid.HeightConfig;
@@ -86,6 +88,8 @@ public class ShardHashCalculatorImplTest extends DbContainerBaseTest {
@RegisterExtension
static DbExtension dbExtension = new DbExtension(mariaDBContainer);
BlockchainConfig blockchainConfig = mock(BlockchainConfig.class);
+ TimeConfig config = new TimeConfig(false);
+ TimeService timeService = new TimeServiceImpl(config.timeSource());
Chain chain = mock(Chain.class);
PropertiesHolder propertiesHolder = mock(PropertiesHolder.class);
HeightConfig heightConfig = mock(HeightConfig.class);
@@ -101,7 +105,7 @@ public class ShardHashCalculatorImplTest extends DbContainerBaseTest {
WeldInitiator weldInitiator = WeldInitiator.from(BlockchainImpl.class, ShardHashCalculatorImpl.class,
BlockImpl.class, BlockDaoImpl.class,
BlockEntityRowMapper.class, BlockEntityToModelConverter.class, BlockModelToEntityConverter.class,
- DerivedDbTablesRegistryImpl.class, TimeServiceImpl.class, GlobalSyncImpl.class, TransactionDaoImpl.class,
+ DerivedDbTablesRegistryImpl.class, GlobalSyncImpl.class, TransactionDaoImpl.class,
DaoConfig.class,
TransactionServiceImpl.class, ShardDbExplorerImpl.class,
TransactionEntityRowMapper.class, TransactionEntityRowMapper.class, TxReceiptRowMapper.class, PrunableTxRowMapper.class,
@@ -122,6 +126,8 @@ public class ShardHashCalculatorImplTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(PrunableLoadingService.class), PrunableLoadingService.class))
.addBeans(MockBean.of(ttd.getTransactionTypeFactory(), TransactionTypeFactory.class))
.addBeans(MockBean.of(publicKeyDao, PublicKeyDao.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
+ .addBeans(MockBean.of(timeService, TimeService.class))
.build();
@Inject
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/helper/CsvWriterReaderDerivedTablesTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/helper/CsvWriterReaderDerivedTablesTest.java
index 80128cd4f5..b89a742270 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/helper/CsvWriterReaderDerivedTablesTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/shard/helper/CsvWriterReaderDerivedTablesTest.java
@@ -236,8 +236,7 @@ class CsvWriterReaderDerivedTablesTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(BlockIndexService.class), BlockIndexService.class, BlockIndexServiceImpl.class))
.addBeans(MockBean.of(mock(AccountControlPhasingService.class), AccountControlPhasingService.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
- .addBeans(MockBean.of(timeService, TimeService.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(peersService, PeersService.class))
.addBeans(MockBean.of(generatorService, GeneratorService.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/ChildAccountTransactionTypeApplyTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/ChildAccountTransactionTypeApplyTest.java
index d98d446447..efc0e2405a 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/ChildAccountTransactionTypeApplyTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/ChildAccountTransactionTypeApplyTest.java
@@ -141,7 +141,7 @@ class ChildAccountTransactionTypeApplyTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(TaskDispatchManager.class), TaskDispatchManager.class))
.addBeans(MockBean.of(blockchainConfig, BlockchainConfig.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(mock(NtpTime.class), NtpTime.class))
.addBeans(MockBean.of(mock(PhasingPollService.class), PhasingPollService.class, PhasingPollServiceImpl.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixTest.java
index 78d8b396e4..6b09ac3af4 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/messages/PhasingAppendixTest.java
@@ -12,8 +12,8 @@
import com.apollocurrency.aplwallet.apl.core.service.state.PhasingPollService;
import com.apollocurrency.aplwallet.apl.util.Constants;
import com.apollocurrency.aplwallet.apl.util.exception.AplException;
+import lombok.SneakyThrows;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -21,6 +21,7 @@
import org.mockito.junit.jupiter.MockitoExtension;
import static org.junit.jupiter.api.Assertions.assertThrows;
+
@ExtendWith(MockitoExtension.class)
class PhasingAppendixTest {
@@ -42,10 +43,7 @@ class PhasingAppendixTest {
@BeforeEach
void setUp() {
-// Mockito.doReturn(lastBlockHeight).when(blockchain).getHeight();
Mockito.doReturn(lastBlockHeight).when(block).getHeight();
-// Mockito.doReturn(currentTime).when(timeService).getEpochTime();
-// Mockito.doReturn(block).when(blockchain).getLastBlock();
phasingAppendix = new PhasingAppendixV2(-1, 360, new PhasingParams((byte) 0, 0, 3, 0, (byte) 0, new long[]{1, 2, 3}), null, null, Byte.MIN_VALUE);
validatorv2 = new PhasingAppendixV2Validator(new PhasingAppendixValidator(blockchain, phasingPollService, blockchainConfig), blockchain, timeService);
}
@@ -56,17 +54,19 @@ void validateFinishHeightAndTimeWhenBothNotFilled() {
assertThrows(AplException.NotCurrentlyValidException.class, () -> validatorv2.validateFinishHeightAndTime(-1, -1, phasingAppendix));
}
- @Disabled
- void validateFinishHeightAndTimeWhenBothFilled() {
- assertThrows(AplException.NotCurrentlyValidException.class, () -> validatorv2.validateFinishHeightAndTime(500, 360, phasingAppendix));
+ @SneakyThrows
+ @Test
+ void validate_HeightAndTimeWhenBothFilled() {
+ Mockito.doReturn(block).when(blockchain).getLastBlock();
+ validatorv2.validateFinishHeightAndTime(500, 360, phasingAppendix);
}
- @Disabled
+ @Test
void validateFinishHeightAndTimeWhenTimeNull() {
assertThrows(AplException.NotCurrentlyValidException.class, () -> validatorv2.validateFinishHeightAndTime(500, null, phasingAppendix));
}
- @Disabled
+ @Test
void validateFinishHeightAndTimeWhenHeightNull() {
assertThrows(AplException.NotCurrentlyValidException.class, () -> validatorv2.validateFinishHeightAndTime(null, 300, phasingAppendix));
}
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/shuffling/ShufflingCreationTransactionTypeTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/shuffling/ShufflingCreationTransactionTypeTest.java
index 4a58928544..bce5f106bc 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/shuffling/ShufflingCreationTransactionTypeTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/shuffling/ShufflingCreationTransactionTypeTest.java
@@ -30,7 +30,6 @@
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
@@ -55,7 +54,6 @@
@EnableWeld
@ExtendWith(MockitoExtension.class)
-//@Disabled
class ShufflingCreationTransactionTypeTest {
private static final long SENDER_ID = 1L;
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/smc/AbstractSmcTransactionTypeApplyTest.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/smc/AbstractSmcTransactionTypeApplyTest.java
index 873da19640..f1adcdb078 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/smc/AbstractSmcTransactionTypeApplyTest.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/core/transaction/types/smc/AbstractSmcTransactionTypeApplyTest.java
@@ -171,7 +171,7 @@ abstract class AbstractSmcTransactionTypeApplyTest extends DbContainerBaseTest {
.addBeans(MockBean.of(mock(TaskDispatchManager.class), TaskDispatchManager.class))
.addBeans(MockBean.of(blockchainConfig, BlockchainConfig.class))
.addBeans(MockBean.of(propertiesHolder, PropertiesHolder.class))
- .addBeans(MockBean.of(timeService, TimeConfig.class))
+ .addBeans(MockBean.of(config, TimeConfig.class))
.addBeans(MockBean.of(timeService, TimeService.class))
.addBeans(MockBean.of(accountTable, AccountTableInterface.class))
.addBeans(MockBean.of(mock(PhasingPollService.class), PhasingPollService.class, PhasingPollServiceImpl.class))
diff --git a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/testutil/DbPopulator.java b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/testutil/DbPopulator.java
index eac963f39f..113b484b42 100644
--- a/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/testutil/DbPopulator.java
+++ b/apl-core/src/test/java/com/apollocurrency/aplwallet/apl/testutil/DbPopulator.java
@@ -62,8 +62,12 @@ private void loadSqlAndExecute(TransactionalDataSource dataSource, URI file) {
try (Connection con = dataSource.getConnection();
Statement stm = con.createStatement()) {
while (tokenizer.hasMoreElements()) {
- String sqlCommand = tokenizer.nextToken();
- if (sqlCommand.trim().length() != 0) {
+ String sqlCommand = tokenizer.nextToken().trim();
+ if (sqlCommand.equalsIgnoreCase("commit")) {
+ // process intermediate commit inside script
+ stm.executeBatch();
+ con.commit();
+ } else if (sqlCommand.length() != 0) {
stm.addBatch(sqlCommand);
}
}
diff --git a/apl-core/src/test/resources/db/phasing-poll-data.sql b/apl-core/src/test/resources/db/phasing-poll-data.sql
index f173ce15a5..d0b33f1c4f 100644
--- a/apl-core/src/test/resources/db/phasing-poll-data.sql
+++ b/apl-core/src/test/resources/db/phasing-poll-data.sql
@@ -1,4 +1,7 @@
TRUNCATE TABLE transaction;
+-- Clean txs metadata to not interfere with real transactions in this script from previosly launched tests
+TRUNCATE TABLE transaction_shard_index;
+TRUNCATE TABLE block_index;
TRUNCATE TABLE block;
TRUNCATE TABLE phasing_poll;
TRUNCATE TABLE phasing_poll_result;
@@ -6,6 +9,7 @@ TRUNCATE TABLE phasing_poll_voter;
TRUNCATE TABLE phasing_vote;
TRUNCATE TABLE phasing_poll_linked_transaction;
TRUNCATE TABLE phasing_approval_tx;
+TRUNCATE TABLE transaction_shard_index;
INSERT INTO block
(DB_ID, ID, HEIGHT, VERSION, `TIMESTAMP`, PREVIOUS_BLOCK_ID, TOTAL_AMOUNT, TOTAL_FEE, PAYLOAD_LENGTH, PREVIOUS_BLOCK_HASH, CUMULATIVE_DIFFICULTY, BASE_TARGET, NEXT_BLOCK_ID, GENERATION_SIGNATURE, BLOCK_SIGNATURE, PAYLOAD_HASH, GENERATOR_ID, TIMEOUT) VALUES
diff --git a/apl-core/src/test/resources/db/shard/shard-creation-data.sql b/apl-core/src/test/resources/db/shard/shard-creation-data.sql
index 902f2c9186..bf9dedb85d 100644
--- a/apl-core/src/test/resources/db/shard/shard-creation-data.sql
+++ b/apl-core/src/test/resources/db/shard/shard-creation-data.sql
@@ -465,17 +465,17 @@ INSERT into `trim`
INSERT INTO prunable_message
(db_id ,id ,sender_id , recipient_id ,message , encrypted_message ,message_is_text , encrypted_is_text , is_compressed, block_timestamp, transaction_timestamp, height) VALUES
-(1000 ,10 ,-6004096130734886685 ,4882266200596627944 ,null ,X'b63f809f0df0b52f46225b702855c2704653e88ae96cd3dfe2c50cf2e30f747907cbb06267616241aa3aa55c2bf90457b1f275e9c96d42c7cc73cdb229a4fed055ad55245c89348c0d05c757e771996d8d597125aabb471bb25cd2d6e524f1bb9811c40f8259eff2cadf1f48df5c06f3' ,false , true , true , 128 , 120 , 10 ),
-(1010 ,20 ,4882266200596627944 ,-6004096130734886685 ,X'48692c20416c69636521' ,X'7ac5c6571b768208df62ee48d3e9c8151abeb0f11858c66d01bdf0b8170b0741b596da28500094b25ed0bb981a41f4dfe489128c4013638d5c8eb143946b6af77b64da893560374409866b0db539ff456bbe56de583181db3ac90d67ee6f16bc0be3faa400e03ef25616b45789fde2ab' ,true , true , true , 140 , 130 , 12 ),
-(1020 ,30 ,-6004096130734886685 ,4882266200596627944 ,X'476f6f646279652c20426f6221' ,X'dd39282b7262b9369773b68a851491bbecac1f9b7a6ec078381962b129872c2df5ee11b489ef1733e78c6c54fb6fbcf992071fdb83c4e40f501b8101af76dae9c61c3726d86490c43955644a64aa004d4fa45184e37060247a9a535acdc638ac' ,true , true , false ,158 , 155 , 14 ),
-(1030 ,40 ,4882266200596627944 ,-6004096130734886685 ,X'ff3456236527fdab' ,X'dae6440045c8d5bf5c561d5ed9209898654038bb375875e5a50bf0d7bb44bdcaf4c074354638aa0fe97d70d4cb00a6d62c119703b75f63d40a29190feb85ba54d9e8e433e07bfcea5923e0ff59a0e8fd3c9bdd7bcd76a08eb5bcec871c65d06f' ,false , true , false ,160 , 157 , 15 ),
-(1040 ,50 ,-6004096130734886685 ,-6004096130734886685 ,null ,X'7f39dde4494bdd8036799dc04d2e7967c3cc40af2fd3a0bd40e5113076713b9f2aa6895b6f848bfafce0fc085c991d0f0883ef75fe8b75e3bcf9308d4de27837958436fb572cf954a3dff1523908d4d09ff85558cb2bcd6ac2bba4967c4ae9c6fca25f4f8313b53b3aec308e02e3f758' ,false , true , true ,180 , 168 , 18 ),
-(1050 ,60 ,-5872452783836294400 ,-6004096130734886685 ,X'54657374206d65737361676520746f20416c696365' ,null ,true , false , false ,185 , 178 , 19 ),
-(1060 ,70 ,4882266200596627944 ,4882266200596627944 ,null ,X'a8d8a1784144872e909f5c5c0eb75ea01fc45a3a0aba2f04bbe8bc29414ab1d82c617d184baf26d4dab5f6e584326eb7a69649d70906cbae8a8633c59b5357b5f19ab6a1bcc94939b33723c192c734f62886a8ad860d8bcd23398545d04776d33401adbdf1f4b72d669388ade4cc759c' ,false , true , true ,211 , 214 , 22 ),
-(1070 ,80 ,-5872452783836294400 ,-6004096130734886685 ,null ,X'11c48e4daac8e8582c9b83715366a0a0b4a7b7ae048d0ad115d22ae973c9c9e255fbb70f1b17168f6d15d877fa4dfd9017c8aedc9211e4576e434fb4b7102776777164f79368343936dd87f65dd58b24f61b075973c7b7c5947e5020bc835baf' ,false , true , false ,212 , 225 , 23 ),
-(1080 ,90 ,-5872452783836294400 ,4882266200596627944 ,X'f3ab4384a18c2911' ,X'8de2b1bb43fc8f8ed866f551edae2f688494da7601b914fbc69f2c9c406f537845eab9a324a151d432d82a0e9d989467b1ff559a947fe8a5d0c9fe7bf0e6d0a44504273ff6b92b419abf752401b785157eb320f78e6ac13f75036a799ea47a4c' ,false , false , false ,232 , 230 , 25 ),
-(1090 ,100 ,4882266200596627944 ,-5872452783836294400 ,null ,X'a1e59a83f92fe32e2e8bd4d840adca3af792e65499ae3d87068c793daf7f7d238c9c0820c951a9280d78e492eb27fb5961a974d98f63756728cb7a22d658dabbc0c6bf192eea4f41d950cff9f51c12f03f2f853cd9ead88f3c88ebbdb1ae0423dad64b3d2c0801fc1780b41c84fc330e' ,false , false , true ,247 , 242 , 28 ),
-(1100 ,110 ,-6004096130734886685 ,-5872452783836294400 ,X'48656c6c6f20436875636b' ,null ,true , false , false ,259 , 254 , 30 )
+(1000 ,10 ,-6004096130734886685 ,4882266200596627944 ,null ,X'b63f809f0df0b52f46225b702855c2704653e88ae96cd3dfe2c50cf2e30f747907cbb06267616241aa3aa55c2bf90457b1f275e9c96d42c7cc73cdb229a4fed055ad55245c89348c0d05c757e771996d8d597125aabb471bb25cd2d6e524f1bb9811c40f8259eff2cadf1f48df5c06f3' ,false , true , true , 128 , UNIX_TIMESTAMP(), 541839 ),
+(1010 ,20 ,4882266200596627944 ,-6004096130734886685 ,X'48692c20416c69636521' ,X'7ac5c6571b768208df62ee48d3e9c8151abeb0f11858c66d01bdf0b8170b0741b596da28500094b25ed0bb981a41f4dfe489128c4013638d5c8eb143946b6af77b64da893560374409866b0db539ff456bbe56de583181db3ac90d67ee6f16bc0be3faa400e03ef25616b45789fde2ab' ,true , true , true , 140 , UNIX_TIMESTAMP(), 541859 ),
+(1020 ,30 ,-6004096130734886685 ,4882266200596627944 ,X'476f6f646279652c20426f6221' ,X'dd39282b7262b9369773b68a851491bbecac1f9b7a6ec078381962b129872c2df5ee11b489ef1733e78c6c54fb6fbcf992071fdb83c4e40f501b8101af76dae9c61c3726d86490c43955644a64aa004d4fa45184e37060247a9a535acdc638ac' ,true , true , false ,158 , UNIX_TIMESTAMP(), 541869 ),
+(1030 ,40 ,4882266200596627944 ,-6004096130734886685 ,X'ff3456236527fdab' ,X'dae6440045c8d5bf5c561d5ed9209898654038bb375875e5a50bf0d7bb44bdcaf4c074354638aa0fe97d70d4cb00a6d62c119703b75f63d40a29190feb85ba54d9e8e433e07bfcea5923e0ff59a0e8fd3c9bdd7bcd76a08eb5bcec871c65d06f' ,false , true , false ,160 , UNIX_TIMESTAMP(), 541879 ),
+(1040 ,50 ,-6004096130734886685 ,-6004096130734886685 ,null ,X'7f39dde4494bdd8036799dc04d2e7967c3cc40af2fd3a0bd40e5113076713b9f2aa6895b6f848bfafce0fc085c991d0f0883ef75fe8b75e3bcf9308d4de27837958436fb572cf954a3dff1523908d4d09ff85558cb2bcd6ac2bba4967c4ae9c6fca25f4f8313b53b3aec308e02e3f758' ,false , true , true ,180 , UNIX_TIMESTAMP(), 541889 ),
+(1050 ,60 ,-5872452783836294400 ,-6004096130734886685 ,X'54657374206d65737361676520746f20416c696365' ,null ,true , false , false ,185 , UNIX_TIMESTAMP(), 541899 ),
+(1060 ,70 ,4882266200596627944 ,4882266200596627944 ,null ,X'a8d8a1784144872e909f5c5c0eb75ea01fc45a3a0aba2f04bbe8bc29414ab1d82c617d184baf26d4dab5f6e584326eb7a69649d70906cbae8a8633c59b5357b5f19ab6a1bcc94939b33723c192c734f62886a8ad860d8bcd23398545d04776d33401adbdf1f4b72d669388ade4cc759c' ,false , true , true ,211 , UNIX_TIMESTAMP(), 541939 ),
+(1070 ,80 ,-5872452783836294400 ,-6004096130734886685 ,null ,X'11c48e4daac8e8582c9b83715366a0a0b4a7b7ae048d0ad115d22ae973c9c9e255fbb70f1b17168f6d15d877fa4dfd9017c8aedc9211e4576e434fb4b7102776777164f79368343936dd87f65dd58b24f61b075973c7b7c5947e5020bc835baf' ,false , true , false ,212 , UNIX_TIMESTAMP(), 541949 ),
+(1080 ,90 ,-5872452783836294400 ,4882266200596627944 ,X'f3ab4384a18c2911' ,X'8de2b1bb43fc8f8ed866f551edae2f688494da7601b914fbc69f2c9c406f537845eab9a324a151d432d82a0e9d989467b1ff559a947fe8a5d0c9fe7bf0e6d0a44504273ff6b92b419abf752401b785157eb320f78e6ac13f75036a799ea47a4c' ,false , false , false ,232 , UNIX_TIMESTAMP(), 541959 ),
+(1090 ,100 ,4882266200596627944 ,-5872452783836294400 ,null ,X'a1e59a83f92fe32e2e8bd4d840adca3af792e65499ae3d87068c793daf7f7d238c9c0820c951a9280d78e492eb27fb5961a974d98f63756728cb7a22d658dabbc0c6bf192eea4f41d950cff9f51c12f03f2f853cd9ead88f3c88ebbdb1ae0423dad64b3d2c0801fc1780b41c84fc330e' ,false , false , true ,247 , UNIX_TIMESTAMP(), 541969 ),
+(1100 ,110 ,-6004096130734886685 ,-5872452783836294400 ,X'48656c6c6f20436875636b' ,null ,true , false , false ,259 , UNIX_TIMESTAMP(), 541979 )
;
INSERT INTO phasing_approval_tx
(db_id , phasing_tx, approved_tx, height ) VALUES
diff --git a/apl-core/src/test/resources/test-env.properties b/apl-core/src/test/resources/test-env.properties
index 30d0218f84..157a989aa1 100644
--- a/apl-core/src/test/resources/test-env.properties
+++ b/apl-core/src/test/resources/test-env.properties
@@ -2,5 +2,5 @@
# Copyright (c) 2018-2021. Apollo Foundation.
#
#comment out next property to increase the verbose level
-#apl-test.env=quiet
-apl-test.env=verbose
+apl-test.env=quiet
+#apl-test.env=verbose
diff --git a/apl-db-updater/pom.xml b/apl-db-updater/pom.xml
index 0f9449eefa..b9e9309a50 100644
--- a/apl-db-updater/pom.xml
+++ b/apl-db-updater/pom.xml
@@ -23,6 +23,18 @@
+
+ org.flywaydb
+ flyway-mysql
+
+
+ com.h2database
+ h2
+
+
+ org.mariadb.jdbc
+ mariadb-java-client
+
org.slf4j
@@ -38,6 +50,16 @@
weld-junit5
test
+
+ org.testcontainers
+ mariadb
+ test
+
+
+ org.testcontainers
+ junit-jupiter
+ test
+
diff --git a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/AplDBUpdater.java b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/AplDBUpdater.java
index e4fbbe3939..4afc156612 100644
--- a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/AplDBUpdater.java
+++ b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/AplDBUpdater.java
@@ -8,6 +8,7 @@
@Slf4j
public class AplDBUpdater implements DBUpdater {
+ @Override
public void update(MigrationParams params) {
Flyway flyway =
Flyway.configure()
diff --git a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdater.java b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdater.java
index 24b153f890..9116eb11f2 100644
--- a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdater.java
+++ b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdater.java
@@ -13,10 +13,11 @@ public void update(MigrationParams migrationParams) {
Flyway flyway =
Flyway.configure()
.dataSource(migrationParams.getDbUrl(), migrationParams.getUser(), migrationParams.getPassword())
- .locations("classpath:db/migration/" + migrationParams.getDbType() +"/shard")
+ .locations("classpath:db/migration/" + migrationParams.getDbType().toLowerCase() + "/shard")
.load();
MigrateResult migrateResult = flyway.migrate();
+
log.info("ShardAddConstrainsDBUpdater: flyway version: {},", migrateResult.flywayVersion);
for (MigrateOutput migration : migrateResult.migrations) {
log.info("Migration version: {}, path: {}", migration.version, migration.filepath);
diff --git a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardInitDBUpdater.java b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardInitDBUpdater.java
index 138a1b63c0..58005fac00 100644
--- a/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardInitDBUpdater.java
+++ b/apl-db-updater/src/main/java/com/apollocurrency/aplwallet/apl/db/updater/ShardInitDBUpdater.java
@@ -13,7 +13,7 @@ public void update(MigrationParams migrationParams) {
Flyway flyway =
Flyway.configure()
.dataSource(migrationParams.getDbUrl(), migrationParams.getUser(), migrationParams.getPassword())
- .locations("classpath:db/migration/" + migrationParams.getDbType() + "/shard")
+ .locations("classpath:db/migration/" + migrationParams.getDbType().toLowerCase() + "/shard")
.target(MigrationVersion.fromVersion("1.0"))
.load();
diff --git a/apl-db-updater/src/main/resources/db/migration/mariadb/shard/V1_1__Add_constraints.sql b/apl-db-updater/src/main/resources/db/migration/mariadb/shard/V1_1__Add_constraints.sql
index 5778f0a35a..45b27bbbca 100644
--- a/apl-db-updater/src/main/resources/db/migration/mariadb/shard/V1_1__Add_constraints.sql
+++ b/apl-db-updater/src/main/resources/db/migration/mariadb/shard/V1_1__Add_constraints.sql
@@ -5,7 +5,7 @@ ALTER TABLE `block`
ADD CONSTRAINT primary_key_block_id PRIMARY KEY (`id`);
ALTER TABLE `block`
- ADD CONSTRAINT block_timestamp_idx unique (`TIMESTAMP` DESC);
+ ADD CONSTRAINT block_timestamp_idx unique (`TIMESTAMP`/* DESC*/); -- DESC is NOT permitted by RocksDb engine now
ALTER TABLE `block`
ADD CONSTRAINT block_height_idx unique (`height`);
@@ -28,7 +28,7 @@ CREATE INDEX IF NOT EXISTS transaction_sender_id_idx ON `transaction` (`sender_i
CREATE INDEX IF NOT EXISTS transaction_recipient_id_idx ON `transaction` (`recipient_id`);
-CREATE INDEX IF NOT EXISTS transaction_block_timestamp_idx ON `transaction` (`block_timestamp` DESC);
+CREATE INDEX IF NOT EXISTS transaction_block_timestamp_idx ON `transaction` (`block_timestamp`/* DESC*/); -- DESC is NOT permitted by RocksDb engine now
ALTER TABLE `transaction`
DROP CONSTRAINT IF EXISTS transaction_id_idx;
diff --git a/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/DbContainerBaseTest.java b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/DbContainerBaseTest.java
new file mode 100644
index 0000000000..5b1964238b
--- /dev/null
+++ b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/DbContainerBaseTest.java
@@ -0,0 +1,33 @@
+package com.apollocurrency.aplwallet.apl.db;
+
+import lombok.extern.slf4j.Slf4j;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.MariaDBContainer;
+import org.testcontainers.containers.output.Slf4jLogConsumer;
+import org.testcontainers.junit.jupiter.Container;
+
+@Slf4j
+public abstract class DbContainerBaseTest {
+
+ @Container
+ public static final GenericContainer mariaDBContainer;
+
+ static {
+ mariaDBContainer = new MariaDBContainer(MariaDBConfigs.DOCKER_IMAGE_NAME_VERSION)
+ .withDatabaseName("testdb")
+ .withUsername("testuser")
+ .withPassword("testpass")
+ .withExposedPorts(3306)
+ .withReuse(true)
+ .withNetwork(null)
+ .withLabel("com.apollocurrency.aplwallet.apl", "testcontainer")
+ .withLogConsumer(new Slf4jLogConsumer(log))
+ .withCommand(MariaDBConfigs.getEnvs())
+ ;
+
+ mariaDBContainer.start();
+
+ Runtime.getRuntime().addShutdownHook(new Thread(mariaDBContainer::stop));
+ }
+
+}
diff --git a/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/MariaDBConfigs.java b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/MariaDBConfigs.java
new file mode 100644
index 0000000000..9e3fd5190a
--- /dev/null
+++ b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/MariaDBConfigs.java
@@ -0,0 +1,52 @@
+package com.apollocurrency.aplwallet.apl.db;
+
+public class MariaDBConfigs {
+
+ public static final String DOCKER_IMAGE_NAME_VERSION = "mariadb:10.11";
+
+ private static String[] envs;
+
+ static {
+ envs = new String[]{
+ "--default-storage-engine=rocksdb",
+ "--transaction-isolation=READ-COMMITTED",
+
+ "--max_connections=10000",
+ "--max_allowed_packet=16M",
+ "--max_heap_table_size=16M",
+ "--tmp_table_size=4M",
+ "--key_buffer_size=2M",
+ "--read_buffer_size=2M",
+ "--sort_buffer_size=2M",
+ "--table_open_cache=1048",
+ "--table_open_cache_instances=3",
+
+ "--thread_stack=256K",
+ "--wait_timeout=200",
+ "--table_open_cache_instances=1",
+//
+ "--rocksdb_compaction_sequential_deletes_count_sd=1",
+ "--rocksdb_compaction_sequential_deletes=199999",
+ "--rocksdb_compaction_sequential_deletes_window=200000",
+////
+//// "--rocksdb_max_open_files=300",
+//// "--rocksdb_max_background_jobs=8",
+//// "--rocksdb_table_cache_numshardbits=6",
+ "--rocksdb_block_size=16384",
+// "--rocksdb_default_cf_options=write_buffer_size=256m;target_file_size_base=32m;max_bytes_for_level_base=512m;max_write_buffer_number=4;level0_file_num_compaction_trigger=4;level0_slowdown_writes_trigger=20;level0_stop_writes_trigger=30;max_write_buffer_number=4;block_based_table_factory={cache_index_and_filter_blocks=1;filter_policy=bloomfilter:10:false;whole_key_filtering=0};level_compaction_dynamic_level_bytes=true;optimize_filters_for_hits=true;memtable_prefix_bloom_size_ratio=0.05;prefix_extractor=capped:12;compaction_pri=kMinOverlappingRatio;compression=kLZ4Compression;bottommost_compression=kLZ4Compression;compression_opts=-14:4:0",
+ "--rocksdb_max_subcompactions=4",
+ "--rocksdb_compaction_readahead_size=16m",
+
+ "--rocksdb_use_direct_reads=ON",
+ "--rocksdb_use_direct_io_for_flush_and_compaction=ON"
+
+// don't work.
+// "--sql_log_bin=OFF"
+
+ };
+ }
+
+ public static String[] getEnvs() {
+ return envs;
+ }
+}
diff --git a/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdaterTest.java b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdaterTest.java
new file mode 100644
index 0000000000..9a5f2f1f4d
--- /dev/null
+++ b/apl-db-updater/src/test/java/com/apollocurrency/aplwallet/apl/db/updater/ShardAllScriptsDBUpdaterTest.java
@@ -0,0 +1,93 @@
+package com.apollocurrency.aplwallet.apl.db.updater;
+
+import com.apollocurrency.aplwallet.apl.db.DbContainerBaseTest;
+import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Tag;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+import org.mariadb.jdbc.MariaDbDataSource;
+
+import java.nio.file.Path;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@Tag("slow")
+@Slf4j
+class ShardAllScriptsDBUpdaterTest extends DbContainerBaseTest {
+
+ public static final String mariadbTestUrl = "jdbc:mariadb://localhost:3306/testdb";
+ public static final String mariadbUserName = "testuser";
+ public static final String mariadbUserPass = "testpass";
+
+ private ShardAllScriptsDBUpdater dbUpdater;
+ private String dbType;
+ MariaDbDataSource mariaDbDataSource;
+ private List tablesToDrop = List.of("block", "transaction", "option", "flyway_schema_history");
+
+ @BeforeAll
+ static void beforeAll() {
+ log.info("Connect to the MariaDb using {}", mariadbTestUrl);
+ }
+
+ @BeforeEach
+ void setUp() {
+ }
+
+ @SneakyThrows
+ @AfterEach
+ void tearDown() {
+ if (dbType.equalsIgnoreCase("mariadb")) {
+ int dropped = 0;
+ mariaDbDataSource = new MariaDbDataSource(mariadbTestUrl);
+ mariaDbDataSource.setUser(mariadbUserName);
+ mariaDbDataSource.setPassword(mariadbUserPass);
+ try (Connection con = mariaDbDataSource.getConnection()) {
+ dropped = cleanUp(con, tablesToDrop);
+ } catch (Exception e) {
+ log.error("Connect error to MariaDb", e);
+ }
+ assertEquals(4, dropped);
+ }
+ }
+
+ @Test
+ void migrateH2(@TempDir Path tempDir) {
+ dbType = "h2";
+ MigrationParams params = new MigrationParams(
+ "jdbc:h2:file:/" + tempDir.toAbsolutePath(), dbType, "test", "test");
+ dbUpdater = new ShardAllScriptsDBUpdater();
+ dbUpdater.update(params);
+ }
+
+ @Test
+ void migrateMariaDb() {
+ dbType = "mariadb";
+ MigrationParams params = new MigrationParams(
+ mariadbTestUrl, dbType, mariadbUserName, mariadbUserPass);
+ dbUpdater = new ShardAllScriptsDBUpdater();
+ dbUpdater.update(params);
+ }
+
+ public int cleanUp(Connection connection, List tables) {
+ int deletedTransactionCount = 0;
+ for (String tableName : tables) {
+ try (PreparedStatement statement = connection.prepareStatement(
+ "DROP TABLE IF EXISTS `" + tableName.toLowerCase() + "`")) {
+ statement.executeUpdate();
+ deletedTransactionCount++;
+ } catch (SQLException e) {
+ log.error("Unable to delete db entries! ", e);
+ return deletedTransactionCount;
+ }
+ }
+ return deletedTransactionCount;
+ }
+}
\ No newline at end of file
diff --git a/apl-updater/pom.xml b/apl-updater/pom.xml
index 01a7a7ac8a..81578f9d30 100644
--- a/apl-updater/pom.xml
+++ b/apl-updater/pom.xml
@@ -104,8 +104,11 @@
maven-surefire-plugin
+
+ --add-opens java.base/sun.security.x509=ALL-UNNAMED
+
-
+
diff --git a/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterConstants.java b/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterConstants.java
index 4b6c4a9cbc..3a11ba6218 100644
--- a/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterConstants.java
+++ b/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterConstants.java
@@ -15,27 +15,29 @@
@Vetoed
public class UpdaterConstants {
// Platform dependent updater constants
- //TODO: check update scripts executions
public static final String WINDOWS_UPDATE_SCRIPT_PATH = "updater\\update.vbs";
public static final String LINUX_UPDATE_SCRIPT_PATH = "updater/update.sh";
public static final String MAC_OS_UPDATE_SCRIPT_PATH = "updater/update.sh";
- public static final String TEMP_DIR_PREFIX = "Apollo-update";
- public static final String DOWNLOADED_FILE_NAME = "Apollo.jar";
public static final int MAX_SHUTDOWN_TIMEOUT = 5; //seconds
// Certificate constants (AuthorityCheckerImpl)
- public static final String CERTIFICATE_DIRECTORY = "conf/certs";
+ public static final String CERTIFICATE_DIRECTORY = "certs";
public static final String FIRST_DECRYPTION_CERTIFICATE_PREFIX = "1_";
public static final String SECOND_DECRYPTION_CERTIFICATE_PREFIX = "2_";
public static final String CERTIFICATE_SUFFIX = ".crt";
- public static final String INTERMEDIATE_CERTIFICATE_NAME = "intermediate" + CERTIFICATE_SUFFIX;
- public static final String CA_CERTIFICATE_NAME = "rootCA" + CERTIFICATE_SUFFIX;
- public static final String CA_CERTIFICATE_URL = "https://raw.githubusercontent.com/ApolloFoundation/Apollo/master/apl-conf/src/main/resources/conf/certs/" + CA_CERTIFICATE_NAME;
+ public static final String INTERMEDIATE_CERTIFICATE_NAME = "CAintermediate" + CERTIFICATE_SUFFIX;
+ public static final String CA_CERTIFICATE_NAME = "CAroot" + CERTIFICATE_SUFFIX;
+ public static final String CA_CERTIFICATE_URL =
+ "https://raw.githubusercontent.com/ApolloFoundation/Apollo/master/apl-updater/src/main/resources/certs/"
+ + CA_CERTIFICATE_NAME;
private static final Logger LOG = getLogger(UpdaterConstants.class);
private static final Properties updaterProperties;
// run tools for update scripts
- public static final String WINDOWS_RUN_TOOL_PATH = getPropertyOrDefault("updater.platformDependentUpdater.windowsRunToolPath", "cscript.exe");
- public static final String LINUX_RUN_TOOL_PATH = getPropertyOrDefault("updater.platformDependentUpdater.linuxRunToolPath", "/bin/bash");
- public static final String MAC_OS_RUN_TOOL_PATH = getPropertyOrDefault("updater.platformDependentUpdater.macOSRunToolPath", "/bin/bash");
+ public static final String WINDOWS_RUN_TOOL_PATH =
+ getPropertyOrDefault("updater.platformDependentUpdater.windowsRunToolPath", "cscript.exe");
+ public static final String LINUX_RUN_TOOL_PATH =
+ getPropertyOrDefault("updater.platformDependentUpdater.linuxRunToolPath", "/bin/bash");
+ public static final String MAC_OS_RUN_TOOL_PATH =
+ getPropertyOrDefault("updater.platformDependentUpdater.macOSRunToolPath", "/bin/bash");
// Downloader constants
public static final int DOWNLOAD_ATTEMPTS = getIntPropertyOrDefault("updater.downloader.numberOfAttempts", 10);
public static final int NEXT_ATTEMPT_TIMEOUT = getIntPropertyOrDefault("updater.downloader.attemptTimeout", 60);
@@ -45,9 +47,8 @@ public class UpdaterConstants {
static {
updaterProperties = new Properties();
- //TODO: check it, there's no "conf" directory anymore
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
- try (InputStream is = classloader.getResourceAsStream("conf/updater.properties")) {
+ try (InputStream is = classloader.getResourceAsStream("updater.properties")) {
updaterProperties.load(is);
} catch (Throwable e) {
LOG.error("Unable to load Updater config", e);
diff --git a/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtil.java b/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtil.java
index 9871f8589d..7c74a0313f 100644
--- a/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtil.java
+++ b/apl-updater/src/main/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright Ā© 2018 Apollo Foundation
+ * Copyright Ā© 2018-2022 Apollo Foundation
*/
package com.apollocurrency.aplwallet.apl.updater;
@@ -49,35 +49,31 @@ private UpdaterUtil() {
public static void init(boolean useDebugCerts) {
try {
+ // using certificated from apl-updater module: apl-updater/src/main/resources
if (!useDebugCerts) {
-
Certificate certificate1_1 = readCertificate("certs/1_1.crt");
Certificate certificate1_2 = readCertificate("certs/1_2.crt");
Certificate certificate1_3 = readCertificate("certs/1_3.crt");
- Certificate certificate1_4 = readCertificate("certs/1_4.crt");
Certificate certificate2_1 = readCertificate("certs/2_1.crt");
Certificate certificate2_2 = readCertificate("certs/2_2.crt");
Certificate certificate2_3 = readCertificate("certs/2_3.crt");
certificates.add(certificate1_1);
certificates.add(certificate1_2);
certificates.add(certificate1_3);
- certificates.add(certificate1_4);
certificates.add(certificate2_1);
certificates.add(certificate2_2);
certificates.add(certificate2_3);
certificatePairs.add(new CertificatePair(certificate2_1, certificate1_1));
certificatePairs.add(new CertificatePair(certificate2_1, certificate1_2));
certificatePairs.add(new CertificatePair(certificate2_1, certificate1_3));
- certificatePairs.add(new CertificatePair(certificate2_1, certificate1_4));
certificatePairs.add(new CertificatePair(certificate2_2, certificate1_1));
certificatePairs.add(new CertificatePair(certificate2_2, certificate1_2));
certificatePairs.add(new CertificatePair(certificate2_2, certificate1_3));
- certificatePairs.add(new CertificatePair(certificate2_2, certificate1_4));
certificatePairs.add(new CertificatePair(certificate2_3, certificate1_1));
certificatePairs.add(new CertificatePair(certificate2_3, certificate1_2));
certificatePairs.add(new CertificatePair(certificate2_3, certificate1_3));
- certificatePairs.add(new CertificatePair(certificate2_3, certificate1_4));
} else {
+ // debug certificates to test local update easily without need to double decrypt url using real keys
Certificate certificate1_1 = readCertificate("debug-certs/1_1.crt");
Certificate certificate2_1 = readCertificate("debug-certs/2_1.crt");
certificates.add(certificate1_1);
@@ -134,7 +130,7 @@ public static String getStringRepresentation(Certificate cert) {
}
public static Set readCertificates(String directory, String prefix, String suffix) {
- return readCertificates(directory, suffix, prefix);
+ return readCertificates(directory, suffix, new String[] {prefix});
}
public static Set readCertificates(String directory, String suffix, String... prefixes) {
diff --git a/apl-updater/src/main/resources-prod/certs/1_1.crt b/apl-updater/src/main/resources-prod/certs/1_1.crt
deleted file mode 100644
index 11e4a2c18e..0000000000
--- a/apl-updater/src/main/resources-prod/certs/1_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/1_2.crt b/apl-updater/src/main/resources-prod/certs/1_2.crt
deleted file mode 100644
index e22655774a..0000000000
--- a/apl-updater/src/main/resources-prod/certs/1_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/1_3.crt b/apl-updater/src/main/resources-prod/certs/1_3.crt
deleted file mode 100644
index 28b898c496..0000000000
--- a/apl-updater/src/main/resources-prod/certs/1_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/1_4.crt b/apl-updater/src/main/resources-prod/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-updater/src/main/resources-prod/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/2_1.crt b/apl-updater/src/main/resources-prod/certs/2_1.crt
deleted file mode 100644
index 7613ffec3a..0000000000
--- a/apl-updater/src/main/resources-prod/certs/2_1.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/2_2.crt b/apl-updater/src/main/resources-prod/certs/2_2.crt
deleted file mode 100644
index 324f7fb970..0000000000
--- a/apl-updater/src/main/resources-prod/certs/2_2.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/2_3.crt b/apl-updater/src/main/resources-prod/certs/2_3.crt
deleted file mode 100644
index 5806a784a6..0000000000
--- a/apl-updater/src/main/resources-prod/certs/2_3.crt
+++ /dev/null
@@ -1,37 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/intermediate.crt b/apl-updater/src/main/resources-prod/certs/intermediate.crt
deleted file mode 100644
index 5d0832b4bd..0000000000
--- a/apl-updater/src/main/resources-prod/certs/intermediate.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources-prod/certs/rootCA.crt b/apl-updater/src/main/resources-prod/certs/rootCA.crt
deleted file mode 100644
index dbe28ae482..0000000000
--- a/apl-updater/src/main/resources-prod/certs/rootCA.crt
+++ /dev/null
@@ -1,35 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/1_1.crt b/apl-updater/src/main/resources/certs/1_1.crt
index 11e4a2c18e..c206ecd8c6 100644
--- a/apl-updater/src/main/resources/certs/1_1.crt
+++ b/apl-updater/src/main/resources/certs/1_1.crt
@@ -1,37 +1,42 @@
-----BEGIN CERTIFICATE-----
-MIIGZTCCBE2gAwIBAgICECcwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDMzNFoX
-DTIyMDUxMzE2NDMzNFowgYoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTExDMRgwFgYDVQQD
-DA9BbmRyZXcgQm95YXJza3kxKDAmBgkqhkiG9w0BCQEWGWFuZHJldy5ib3lhcnNr
-aUBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCV0/1a
-bFOaNOLWU5NqRhV4Fn0kY5lLZ9WWvktLfv6ayBoIV4z95msGdAac2YhDdRC9bE7i
-sPiz181qknwmUBq1js1wJotEhXuLf2CI5l8t3ENjEzQS7NJKFmusai6yKdFloL+x
-KRJle/jGEX3ox59hiHlwzqZrWszO2nI+kNOWcFbzcReJEfnpj3HW3TeC1y0SL97d
-8b79i63u/Fk7Y9IpWIsNgU+h8PinqP+wCeciN0DfbdmVQrNPeNGLl2lAGHP+qstr
-tOdXxJxJG5qyi9F6Upaza8J1QGxpPJaa3v9LwcUQdV/hVefDRXntsvPdRMEFwUpo
-zKiV1IOTh6Tvp/3bJnS+BHBWdOdcLMSjE3v51Igs3BSf5OXeMxYyMfSCOsfPItYH
-aWfDESp6Yp9LkhXp9ED4vltVtLr9ZRx7QVm9ejhTtwLCjqdwhFPPKS4xZKNx8LbH
-9UpjJegVddYbLuRbOA1AgvFxs/DlQcD8dLytFPgyNQncsmuLa2jW9bqpKH97ShQM
-XeneAkZ8MbexV4sq16Rzza+YM4btHyau54zbOf8tToODzHGeo008JDnNUnLIav7S
-UrD0VSfSEapSwkfxfKWJxirDJwVFSWaUzyiYQcyodkgL+qvu/FIEd+ez806mr/1+
-zTr66P8iKIJgx9N+tL9AmLC3fQzbtxtobaehvQIDAQABo4HRMIHOMAkGA1UdEwQC
-MAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG+EIBDQQoFiZGaXJzdGJyaWRn
-ZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQU+79lra4ptoen
-wQ1yJ79rNrrviCYwHwYDVR0jBBgwFoAUSxXHUsfikHvFOWqlbMq4iLL8yS0wDgYD
-VR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUFBwMCBggrBgEFBQcDBAYIKwYB
-BQUHAwMwDQYJKoZIhvcNAQELBQADggIBACnXYSrj0UjF9Nc6aq6l6lfiwqeef/ck
-l9Dp3uKGKVe0YUydO5XERWIV8+6QrwLr5Kk4WOVK28jDCaQurl4/+3xC6ZcY0839
-2jZXWIkhuWI0frq0lQTP/puNxKxAzA/a9XGFXVomBc2C/NmPGjOdbJZ3Ia9ozr6g
-ssOr8CDne0UrBOKmMPj4Wd9M5lP9wwIaGemxfs79G0MyjhsgSUnsVm9NdNfnX3qc
-C8Can1GuHUetUaLZkXCzN4j5etMnvMRDZ2OCVLEy1H7Ou9L8JT5rHo1O/WQGdy80
-3tIakvjGAYikKZsoU+dcf1tJ3JARVuyuKnB89XV1Q7igAFD7Xr4+TMFUGnQf9/+c
-dMoaAZq5YCWjpOGiebrhCSIcVRwlLbxdtMPRL9G9hVe5yn2FHQysDkAQ8O5jj7tR
-j9+PvcjG9uarlOiWmMy+ZYKwnHKAUxqOk4w9aZFIURt53m589IhZB3q7oMueD9nF
-aEpfqyfJz8/zKARS0eKqqrv78rAetf8zFfef6pV3IECtDGc9axvdTMvOvsGwjobv
-AM0g2T6XyVM6pN4bDrxmkS6cy4inhYOe3gXverDDjpaMozYcHV1xUkC/AtVVUWRR
-ueaa5vMWC4xhsTBZJ8XqSIan75aCleisSzaGS8OHP4+kuoJKi06My+AGRsq09w0S
-6CMfM1dq0jkH
+MIIHazCCBVOgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDczNzU5WhcNMjYwNDE4MDcz
+NzU5WjCBuzELMAkGA1UEBhMCVUExHjAcBgNVBAgMFUl2YW5vLUZyYW5raXZza2Eg
+b2JsLjEYMBYGA1UEBwwPSXZhbm8tRnJhbmtpdnNrMRkwFwYDVQQKDBBGaXJzdCBC
+cmlkZ2UgbHRkMR8wHQYDVQQLDBZCbG9ja2NoYWluIERldmVsb3BtZW50MRgwFgYD
+VQQDDA9Sb3N0eXNsYXYgR29sZGExHDAaBgkqhkiG9w0BCQEWDXR4X2h2QHVrci5u
+ZXQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCxrLs23LbZa3d7TnYA
+9c+vi/vraLGOGVMtHs667YzrgnqTW5WJBczvkBQLHhL+J8XvUG7bgD5vnVchAH/2
+sn56+w/WqvZ4r1UtR9l2MsvbNjWL3j3gV1sbWZqE6Wx47xRPEmswhPD0OIVjqc0/
+amFgwpkAn2QNS/p6O3GBRmq12cFrhwH5sh2Ipp5EhlSMuIQxuh0iUoJOb06ux382
+o13HqzY0tyoIwrpOprmQGTAgO8XK1NOfkMJuLFpka6adp9u/Qf1l6U89+U07Q2xK
+k7hLbetV8rtnWX0r9TKLhOYJeD3XmUCeZox+579Yr+2KzUd7XMia3MmeKugjKelJ
+oUBS+iAlazUOPJLqvgkQdoorhAH5M0CL6p9gJY6dyrY8XsNTE0F+ie2Brn4DEpz1
+wYrRyxQKH7PG077Ac5PEDlE1Qwvqm66uqzecQXOKrWcz89stQ5+WpbBiXDKEUXjm
+++U2MkKRIY0KOpQCnjg11V+PUPoR+empPCyZNo8r4C9Vi6Hld5EMQe7VUTn4i27r
+CysCCHfZXmYxoKjQrRlP6SuI9i6xX+kXN0Mi9lx7KzExTP0eqO32477NjRaP3pY2
+PlDncgKI7mTod6S183vpG6UgAarnviLM6J1tk58IXJq8e20C7r2ZA7Snf+j7K0z+
+42z2ym2xcihxn5M689TdSqrNcQIDAQABo4IBfzCCAXswCQYDVR0TBAIwADARBglg
+hkgBhvhCAQEEBAMCBkAwMwYJYIZIAYb4QgENBCYWJE9wZW5TU0wgR2VuZXJhdGVk
+IFNlcnZlciBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUcGqtzZR2DBpb9tCGdIWG67S6
+KfYwgeEGA1UdIwSB2TCB1oAUotdE16DWA6yYMRKLBog1I9ixYYqhgbmkgbYwgbMx
+CzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0wCwYDVQQHDARLeWl2MRkwFwYD
+VQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYDVQQLDB1BcG9sbG8gQmxvY2tjaGFp
+biBEZXZlbG9wbWVudDEaMBgGA1UEAwwRQXBvbGxvIEJsb2NrY2hhaW4xJzAlBgkq
+hkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRnZS5pb4ICEAAwDgYDVR0PAQH/
+BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4ICAQAJ
+IC0uVCl5FoyHaSTKgiiyx4RTp9aVjxHQCF1TfKul37NtFjpx7fAc5m7CV1QdJ4gw
+W0tL6quZntAUIh2FVtgLRsBluUHMC4gj9x9W1WT4doq/hSu5Xux83gYSKmJBJ/Kh
+3cRRPOzTemgk+v+dOhIkNKtNrqUHFIeNOHnh0B2ml7dHsrs/QHJZy9YP4o4mAFO0
+acmRF2zYMq7AUOPkQGbmG9YbGFXnlK08hRFyd1/WNAHj1whV1DnxbyFHPupFidiR
+3QkYt8xC+sTEYciOdg7b3o5n2Y8SxzBxn/YEdAEPSJfWA1HjBAAaABcobmro7tDx
+YC+CDS+W29WozDOheUPhJMCiBsGM5zq/Su4FQoYdSvgAnjJ3NHgWAESUzqyjYqWA
+KN+GbhyY8nc3SdF0yK1OTLiOPpdokSbCi6daFZp4xtTRQA8na0BgGbMb9R1OgAw2
+yuiYTiefQfPEHnLdbfGdhAvXZCN2esgFRbspkRTIjbQAZKr1w0H+5Vd0aG3kMFVm
+f3A1muP1BMLqAdmMC5aKEr/mEl5hcxHCSsvjr1ZFjfwTQwTuW6dAKB/v2z92atEu
+BlgjdK0HfdCwLSYAATP/in7K3vCs6dSgCwBHuE+DKQR1oG4Y3xHufGR2OeRbBM3Q
+W8NUQsAPMpeYJSq/JV5M3pj3uDFakMFKAxjho6pcdw==
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/1_2.crt b/apl-updater/src/main/resources/certs/1_2.crt
index e22655774a..7e65e7ab99 100644
--- a/apl-updater/src/main/resources/certs/1_2.crt
+++ b/apl-updater/src/main/resources/certs/1_2.crt
@@ -1,37 +1,41 @@
-----BEGIN CERTIFICATE-----
-MIIGdzCCBF+gAwIBAgICECgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQwNFoX
-DTIyMDUxMzE2NDQwNFowgZwxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLaWV2MQ0w
-CwYDVQQHDARLaWV2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTHRkMQswCQYDVQQL
-DAJRQTEYMBYGA1UEAwwPTWFrc2ltIEtoYWJlbmtvMS0wKwYJKoZIhvcNAQkBFh5t
-YWtzaW0ua2hhYmVua29AZmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUA
-A4ICDwAwggIKAoICAQDHfLDK95NWKHN9Dtx1NC3seXnZHXWlnuRLzGUxhNV/m221
-4JqRR0GZ354cPOVMYrdkbu+g+XgGwqB3JEHNfnbW7JPMF03SumjpMgCGpFQodZUR
-F2HMNVijMTgbD1AWMbPK6M6Iph8M2Y9XtF/jWE/+8R5knuAeumJVk9plvkHg8W04
-rZtMMoX33j4x4s7ZuuwoTVtL0tbccXzGInyk64mkUmOltk/Yh97T4AHyPIDZo/ux
-Ns5Iq/L5bE9P7Nmh0glQGYig4f/3C0vK+FuubZRKphHLgczdJlBfMAQ+40IxBWJK
-TnbjIHLloWq0f7j5SH9kfHUGxLR+p11dUTrBRpUFOGeWl3lQMicp43nrD7YocOxe
-fZO02Z4mP7n1RLfA3CRFpB3aFLjbyvCa+OBD7yHUEA27H1YTX9xhxEgYjFrZDvSv
-5jGth5U/Qvn5Trwe5rDS5QNnUsk4klPqZRYypLCtoGSct7OXYFP1p65KFES731Gj
-8E6LTho/lGwibPomgwEeQRh5GwCPWoMLaN1zCQ9MAYZz1hevPRDFd970gmjAue4g
-BICEAqQ06b3h1Wh5OgSdizmRcQJQGBW1L6h+dx5Fw09anWrmunRgG7ieXJoab9Tl
-wjfMjjVUhuXx2fAP3vakqOU5Ak7HqtYTQawrj8Kp7XA04Hzg1OM/pzEvOwixvQID
-AQABo4HRMIHOMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgWgMDUGCWCGSAGG
-+EIBDQQoFiZGaXJzdGJyaWRnZSBPcGVuU1NMIENsaWVudCBDZXJ0aWZpY2F0ZTAd
-BgNVHQ4EFgQU1TQGa9VBjCEC2IwqK2MgnKyKEIMwHwYDVR0jBBgwFoAUSxXHUsfi
-kHvFOWqlbMq4iLL8yS0wDgYDVR0PAQH/BAQDAgXgMCcGA1UdJQQgMB4GCCsGAQUF
-BwMCBggrBgEFBQcDBAYIKwYBBQUHAwMwDQYJKoZIhvcNAQELBQADggIBADl4Vi4B
-2iM1V6RlPuNv0fy2sMxpoob+GcNsEdTFh1u+awVfwo0wWkU6YZYk7xhwE4nRMrgD
-WwCUIbUd6FSYaZ5Zr2tlj8LIj9MwKm2txJewLb7Nx93t6NAag/o0gcy0hPCdEGdz
-DPFts65plZgnxjwByTJXgU2lW/AvaNX3IySxhHY6eH1WY2wcN8VFZTXJHzqtpIPU
-8wIi7rfk6H65m1YumjCTXbDydTCUCXYOzJxpQwaouI7jJFVoAPtVDBg7kQSP8iHD
-7hzdA60oXlO54o/DSiCy6rFpruMVh7OUwoPTlGEbrvWn6Ex8FHfe3/P876/GOOI1
-r9JpXt+9R8H0NdzfAsjLylWVSpS+faEwKTNEoYjNWaJA7ScZOyyDdzBCHgoqLQvG
-ke8DpxdHMrkNX3PS6fUq7b1MF2oGZY+y6Rslqe7KK/RUHNsW3I2ElxGomn8jtMo+
-2TbabG3e4DHXc0Z9DAcgtVWKAJ/0Bf5wcvrJ10TBYXtBTJ+n+AKLD8OjMlpj/zrY
-fj/ki58CV0Xe+ou9wmVAb12o6Obtot8RI/YYP0jYoOl0XSf7PE0uWHxWxqoq+KwR
-YDAsVujG2KKWBcvXDxwkcd3XCfhuc94ecrBskI3x8Vs/x9qArq75uATthffw4Jit
-vBdOc4srytIdREo35LjC3xam5CHsTYgfRn9m
+MIIHNjCCBR6gAwIBAgICEAEwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDczODI4WhcNMjYwNDE4MDcz
+ODI4WjCBhjELMAkGA1UEBhMCVUExDTALBgNVBAgMBEt5ZXYxDTALBgNVBAcMBEt5
+ZXYxFDASBgNVBAoMC0ZpcnN0QnJpZGdlMQswCQYDVQQLDAJJVDELMAkGA1UEAwwC
+WUwxKTAnBgkqhkiG9w0BCQEWGnl1cml5LmxhcmluQGZpcnN0YnJpZGdlLmlvMIIC
+IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyN+QQg/GQk1aa5ucyYXJDHGO
+2rQDNBzGzYInmpQVFFLWIzlTk1rhW+rsbUg6OvZ6oMSVfC16wQ+XCo9X4ELm7+m7
+MsF3i+Fa7VGO2H0Z3Lqpxtjk5yaiUuvUiQFcgZh+Vo7Vwp4crGeveo8TH4qePL6g
+Ynvo4T0gJpRWefVnIsiBibdQ7SoFABTkq77qXamZWXQIdRwzQd+9m5VVewDM1RAH
+f6Dk1ekLdScGy7wvo8XFigZIzGn3lswxOpH/k5xD1H9tuWKPe3apl26S4cwBKwP/
+1jv9m3+Crs2PVYAMK9/40Hasz1UVZY5Vhb4s/p5YXUXjFD7EM/DB+FMcO61ynA5s
+VAAizzRsvjPnzBDu/ZZwQYdzsHOmcOfzpknMnXnPiQlJ7r1ntYNOMIutDT+yT41y
+w3BLAb9IH/SGdFo/KowVuPOeS7ul18JANfL/Cf/EX3do325ybF/bnMLGppKk7YTH
+8xl6jJNxu9gRZF6cUxSe0eqV3HwwSTosGn5icmqK4+qNLcGsbOZOdbtdxubYmJ9G
+xVpkyabC30q8v1fYLVZ4+q2mfAHPWUyied8xRxnIvG5+CMBZCENoUs9av1Xofs5O
+sRRfcVoE32H4+tQYBP0ManEvUTxPA4gz4MF6N2s2/Tx4H+TgGge//5f5lt0ag8s5
+Jalg7HaYIygv8vhF9IECAwEAAaOCAX8wggF7MAkGA1UdEwQCMAAwEQYJYIZIAYb4
+QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NMIEdlbmVyYXRlZCBTZXJ2
+ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFA6maAXvVRbvOhXD0hjIGJIDxGTBMIHh
+BgNVHSMEgdkwgdaAFKLXRNeg1gOsmDESiwaINSPYsWGKoYG5pIG2MIGzMQswCQYD
+VQQGEwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UEBwwES3lpdjEZMBcGA1UECgwQ
+Rmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwdQXBvbGxvIEJsb2NrY2hhaW4gRGV2
+ZWxvcG1lbnQxGjAYBgNVBAMMEUFwb2xsbyBCbG9ja2NoYWluMScwJQYJKoZIhvcN
+AQkBFhhyb3N0eXNsYXZAZmlyc3RicmlkZ2UuaW+CAhAAMA4GA1UdDwEB/wQEAwIF
+oDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsFAAOCAgEAuXqKCVV/
+2caG0dl7YqAJKyvx6Ujh2HnkFPwIs+4iR9yMK1ztg/0PPoUCMIN3xZ0HzyrsHg5w
+VpO4t4osPnb9A0t+cJS4iSyy6xRhmICpbfG/Lc5FLM+dRqIWSeDajPbCEWYtLAyq
+mIv2hSe2FI2HrSpKIBsfch089G+QQgkFO8sAdaWEUgmZv51rnQk2+nqk3vuVy4on
+h+QYqFj66uB0gJqESZejGvJhD1PLGujAf3Hwuqjf57lM6awJ6kmR5y+DsDczkXmY
+u8kPcjFzeq+xImYbX48zEveK79DO1gryR0ZwlFMv09Y4DXvfbhF5q/WU5TQ91zdf
+lsDTKTTE4NvvM85EnSrNHoqCJchcIV2657QbP7MrmngpVtGqueudQ748RclxvjLY
+41Dw+PImcIFfT5cPVu2V2wQb0SG4x8R7phFbGW5OcrkT/zGO3cy6pGCq6qE7EGAv
+kye66f3p4waxDAYd9QNgE2atVokFW1SmnsStQWPZ88A/aoGuwCxpbUcAw48an1GN
+VOkkjM2m8H6dyZ+b324vb+hzt+bKnQahTGh37cRO/ILRSdUgNzZEWFWk0UTVhvze
+O2NynY6LiD/gCWFbkTKBocFV8cAbhKpDazKEElDHqSmOsd43IHPtFA9g8vByU7Sj
+lhB9ceFvdcgaKkatD9jUrq8oxPe85ZcZ1sA=
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/1_3.crt b/apl-updater/src/main/resources/certs/1_3.crt
index 28b898c496..e1d8a80a3d 100644
--- a/apl-updater/src/main/resources/certs/1_3.crt
+++ b/apl-updater/src/main/resources/certs/1_3.crt
@@ -1,37 +1,41 @@
-----BEGIN CERTIFICATE-----
-MIIGYzCCBEugAwIBAgICEB4wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MTEyODE0MzExOFoX
-DTIwMTIxMjE0MzExOFowgYgxCzAJBgNVBAYTAlVBMQswCQYDVQQIDAJDTjELMAkG
-A1UEBwwCQ04xFzAVBgNVBAoMDkZpcnN0QnJpZGdlLmlvMRkwFwYDVQQDDBBhcG9s
-bG93YWxsZXQub3JnMSswKQYJKoZIhvcNAQkBFhxvbGVrc2l5Lmx1a2luQGZyaXN0
-YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA4Pj571wN
-HXIngO8mEp/znveFKwbyWD+t8MQSqEXFFDOCEFuzDVj/leaN7cRW+PiR2gQmO9MB
-EFIg8UHV82WE5jomjI/oi2PGgdVXjkOvFyF9hIXtKV4j+V/AVXm8lswOjkdV0BuR
-cx37u/dQHTanRqIOqQ+hAiBRR4aY63V3MGeK+K8ypxEOoMsC2t3HPWECrlhh5xir
-M5FZX+BpnvhUwTEnJsEdugiQUBg5joCUnvGvxiPq/5aDYP/dkQmEued+Lvy3WgkI
-H6gnJHS5QiMR5YfbPkUAXWnEXQ62BxWdyqI0oTZ7uHzJhmkrF+aRTFzEJZZIualK
-xLDT7qeO8Cd8ifrMHdVZ4fMcnlDwarGA4jgZ5N3gmRNG4WI6ESMCnZct8DkXF8Sg
-eQnh1TuTY8elV4/2X33cFtpe7YfyMXxoyqohesqANjihdDEZ3O7OGK1CxBjIxkvr
-GETsPJWlkPy2gIcrAhCvwcCt3fdl+l/QXv+TdyP2JZrYyfs/T5uMI+ypHu98fZWI
-3oRgD0/sOEWr0dOlJKEiE6TL+dMe8IqR9r4RoQRJS2sOo7Sy47MRXhDQM7E3aHDV
-EvkxMpoC6IxHD6Xs6xWBZ8utwwwV9zoaX1oRl3/hT22zvlWoZnjqGfcR7WFJiDAD
-RZQFLg3z3fFHg2+Qz/rrbsEIPhLp4vCrEF8CAwEAAaOB0TCBzjAJBgNVHRMEAjAA
-MBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhCAQ0EKBYmRmlyc3RicmlkZ2Ug
-T3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFEP41g/42ArtYyuV
-t6lhQ30vvNBMMB8GA1UdIwQYMBaAFEsVx1LH4pB7xTlqpWzKuIiy/MktMA4GA1Ud
-DwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcDAgYIKwYBBQUHAwQGCCsGAQUF
-BwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA3QRcWoNlBYycRnp9hD5snVSn0DqkTHMg6
-6dG3g+07jwbjPQjvI67ylhxRt3cfwtpd3oUBCARu2HxDMsMTSa/xwLfE9u8m+0A6
-FsFIHSKH3dEQzhf1Ty2cIQXF+KydOOVa3kXbpBMshfzAUwAemL/4dbgmBnsTuT2D
-Qq4+mO75OHxbvPVqkvVH/EcVleQd0GArO0EeBoxrm2P4ArVLTHUoIbSE+ihacWRL
-JEhr1B5365mDRlOhIQa8b3DVohz0YlHUPCq5hecdSHbN/JpkhpFqvNMdTphmhyMR
-KZ5f6cVpOwVw5CwGHRUxcfBfVYu93GJqAYizlNIXn5Bz46MDv1xKJZ1hohok2r/T
-zaoD7i0mhm2TJn6Do0xPu13XLuGR9cR+87njSK57S5RzGKJsjHoqAFmkIvhFCMzV
-kGkcX3sp6k4WWP23Ym7JZBvp4WjCg68d8m1zVrt2u4duI9JiAEZc6lnfxPVc0Mm1
-159HDXom3lQhpavTPWWY8U1kMrpVAOOPk06D6dr5MEEBPBTnmVitr5iDbg5J9bjP
-IEge5MMbFls6FTLVsWdTb06rLLrkJ59zmpg18VgKWaCn4HzOBw4qpZyRw50Wf3WQ
-wglD8D6SQqjPVNJyoxLNelBD0hYFcNo0Kgo5+3r5N7kumYZlkatPsYpYt3CjTAcI
-/3PsdjVyyA==
+MIIHSDCCBTCgAwIBAgICEAIwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDczODQ5WhcNMjYwNDE4MDcz
+ODQ5WjCBmDELMAkGA1UEBhMCVUExDTALBgNVBAgMBEt5aXYxDTALBgNVBAcMBEt5
+aXYxFTATBgNVBAoMDEZpcnN0IEJyaWRnZTELMAkGA1UECwwCUUExGDAWBgNVBAMM
+D01ha3NpbSBLaGFiZW5rbzEtMCsGCSqGSIb3DQEJARYebWFrc2ltLmtoYWJlbmtv
+QGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+10cElFVAOXkZjrkj7wL/Mm0JY12thKXYtxViLJwm1OsfDsvc+o+SqUVUIueqdftV
+L4NwJiEHmaCupX2qat6wcva8nKLVSvCglnbYNsLlyqD3rPAol85a5ZXab+UnMjgX
+IWtwjGVqzOjuBNH3BV7T591H9EIlDP2SeivPqdTXTCqwf3mcqw2xR6x3BG2kzn9N
+nkF5pZ2o0e3mbSMKjedTIILWm6Uk+oXokpAWGIftuyCMLyffP8uL17fiWMpYzxRo
+MK0ghKo5II0YTXH3pPMQqSK0Yxavocg3mn8PTsynp53SUb6ebxAYgXtiWc7wWcQ7
+h8ouH7rpjrJNgcfOZzvpOBexIi1wvzkk1tKdaXj0G8SLoP9nE86eZxiU0WkTdBxb
+MlK3AOI0H6FRp9X0MJw7JAgZrDpXd/cV+g2OMxSd79/NNlcHUrS1KQBypp1HUsp/
+h0zDL/BSXIpaI1SMssaFio85lgHA6kEWN4e7roC6QpgpKFSOj7YkDS/HUF0T7YGo
+HevLtgeXSQSZ+Mv1PgnRy2DDwFni9+QhurT0U/9q3m3wL6qz/lCr9O4uOXJBACz5
+ytxpRrQltVHvpNPnKGUkNESKcQOqkvQgJYfI64g/DcWPQVv2JxH7k9cAqViMsWE/
+UniBu63ZmavzzYYcBadvbBbzQXom6w0Wq3XiFDeYiU8CAwEAAaOCAX8wggF7MAkG
+A1UdEwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVu
+U1NMIEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFAZDi4Zv
+PORCfyFByFVQQGh55HGiMIHhBgNVHSMEgdkwgdaAFKLXRNeg1gOsmDESiwaINSPY
+sWGKoYG5pIG2MIGzMQswCQYDVQQGEwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UE
+BwwES3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwdQXBv
+bGxvIEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxGjAYBgNVBAMMEUFwb2xsbyBCbG9j
+a2NoYWluMScwJQYJKoZIhvcNAQkBFhhyb3N0eXNsYXZAZmlyc3RicmlkZ2UuaW+C
+AhAAMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG
+9w0BAQsFAAOCAgEAOd9IPpiF8xz4v9LhwSvG0WekopJmH6ulYjMGPFskgsZ3Iqtt
+fnkuz/t3WGJbAa1Wq01icpAlnm8m2+AiFoUhJhFu0/zXhD4T/BD1nQDsoBgcDPwH
+jPi672GB7pIlADdiYj2m21hs0WJ9+GvMyfBL1b3FM0im38x7NqwEB/suHDgkx6e+
+rYhm1mpPgIC9cVWbT7GQaVScX90K/zQrhRwUw2UQhjZYkcOAte0KswsPOa+g1bBr
+cc7MO6TF94s7346zsK7p/kiqQR1fbXEp5XVD6vOmVHcJDzkkk5zo1yqtiVfSM67W
+/QDhhJyEZi1bQ90I0GAg6Wq0fX4J3d2kPHNhtImtjqZgYNLCevpuX20RLklfShod
+5qV2ZUQJ170IyPtIMDX+cU9duWQ1d1MllQhAQP0zCOIA8QeMloEI3Z+1RIDkMjRC
+F1vxdP3be2hdyzhtx0PIOg6Cen+ZbQnFCwHgsd1ICX+GiqZXtt3xMMkBVYS1c0qy
+trmq/FtJoWU2BytKbWXQ+gIH08ZR6mE4CpxZ0zrmDGbEbHvZ1T2K4IOHLuE1mbVx
+0XybXKhUMnat3C8H1PQBinBVI7rVjUfmizvqWirspSUAanTNo7+y9QBgB2FJb03a
+recoj0vPGzrjnVZ2b/OL+n9Jn9K5uyvivdapU0U8/ZxfdFcg4kMZtV9/BEg=
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/1_4.crt b/apl-updater/src/main/resources/certs/1_4.crt
deleted file mode 100644
index 1ac7907588..0000000000
--- a/apl-updater/src/main/resources/certs/1_4.crt
+++ /dev/null
@@ -1,38 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIGkTCCBHmgAwIBAgICECkwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NDQxNloX
-DTIyMDUxMzE2NDQxNlowgbYxCzAJBgNVBAYTAlVBMRkwFwYDVQQIDBBJdmFuby1G
-cmFua2l2c2thMRgwFgYDVQQHDA9JdmFuby1GcmFua2l2c2sxGTAXBgNVBAoMEEZp
-cnN0QnJpZGdlIEx0ZC4xHzAdBgNVBAsMFkJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQx
-GDAWBgNVBAMMD1Jvc3R5c2xhdiBHb2xkYTEcMBoGCSqGSIb3DQEJARYNdHhfaHZA
-dWtyLm5ldDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAND5kGVyK4J2
-ozPOfNLVqm12PGXVp+tT1FFwG9UZ6Glosh01l1azYfNTDuJt+zFKbpgzZLYcZhks
-oEcJlQK6/TiYlwvCkf7xHc/5sC0BHCPpJGcesVloanerP+Qg2Rhp3BvIu2kW1v6E
-KiAiEKbAaefvIiufhGtnb7c5JpOhjrJW9CcJMCQESVNrKbMqT2E5u08nvWrVPoBm
-3tu7MvVOdESV42qKWr4l58PL02JUJYoE6zFx54b4u7q/CXjkUvFR5i98JMhFmuEI
-Q7FPJyb0IsspiPQI0t5tfNQwPtrI1004AgG08Qies9MP5ucfXuGY1y7G+CbD6785
-6RzIwXvFsVCAiKXGVOxvpy7si1o4feV2S7+re9aTQj11MEQYDWNYXVN+4vJwL9qX
-qcqG9o01XMbLjVHq7AiBz13JoYenQPln7pbaQ5xLHBmgSzP6EJGQblZz23vq34Fd
-9gokTCVSVWEYD/Dsly22Pi254NAhp+aXLVH4PdPD04RVzVnu2Xu+OkQBLYxa2/mH
-NYfgaMrwBgKO9JHIqHb6c5JfFrXxkEhiKwX9/20EWpEu1E/XM61a9i7ZF2BaH39p
-Fn8gWoL6q3cC0tAPTlOYu3J0ycpdIQm5UQecoBfyEiCH0M2+Zvhzt4lf04xloT/V
-YFQ0Yf7kF+fxPRW33rIr2wwsEbwTyAN5AgMBAAGjgdEwgc4wCQYDVR0TBAIwADAR
-BglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4QgENBCgWJkZpcnN0YnJpZGdlIE9w
-ZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0GA1UdDgQWBBS5nIUCDZlHhOq1tDYX
-IXRbPTs/bjAfBgNVHSMEGDAWgBRLFcdSx+KQe8U5aqVsyriIsvzJLTAOBgNVHQ8B
-Af8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUHAwIGCCsGAQUFBwMEBggrBgEFBQcD
-AzANBgkqhkiG9w0BAQsFAAOCAgEAqIAsBuaO/1+TLWN5RkUy1zh4haslSwe08R7D
-54MnQl3DcpcpaDa045PVJkec06p5Z9RxuzzyYBmPH5SoQ/PPiGTq3La4HBvPMDtH
-BsyRdwxZHRf70inCKRGHTAKupL+duyx0AwsF5V0n2xF5QkGZLoxhOULY0rcVfiGM
-IwfnCFBZWRuN9MOS8PopgyjjT9uXLlaARz26SIwPPKpxQunwykN1QUDrmapzSDz2
-PeTRwsOPuYuXN/XOUq8DUE4qVoUO8cr64aXzWy5UDOPZLs9zxdO+yqyy6Vex9Qsv
-uch3mNgoXeu/gxTJ+euCy/n6RtiZe3z06wth/1+5kav5kmDduwpsepk05ql7BnCi
-y/Ke9KbIOnjnMUjl1xXbo2rG7XVj7IpucP3LRT4rLB0VAxWVjype97WC7u6e2vry
-TRv5VYHyzELD8hZz84ajUQ6NaGH6DfwtOwEX0Gxj/FuNiX3TrhcHdw4uVo4UypyQ
-d1GZt8RpOy09jjZu5PNxnlBDkw5Bi8FaDVg9PM3Gq3I/ZT5dG6Zu5104iv2CgkdD
-QJc4PhPsq4rPOLtWmrJ/J2AqBD9vfxjoMiAjLlzvyj6BIiJdMFnLi8qQBQw+G7bW
-k5hPJtW40OX0IIYd/jiKcTHB+0oBlBvI450DmuryH1m1ikMEqPB99YPGtef8m3WS
-EXVXy1c=
------END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/2_1.crt b/apl-updater/src/main/resources/certs/2_1.crt
index 7613ffec3a..1976448c67 100644
--- a/apl-updater/src/main/resources/certs/2_1.crt
+++ b/apl-updater/src/main/resources/certs/2_1.crt
@@ -1,37 +1,41 @@
-----BEGIN CERTIFICATE-----
-MIIGeDCCBGCgAwIBAgICEC0wDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTEyNDEzMDMwNFoX
-DTIyMDUxODEzMDMwNFowgZ0xCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0w
-CwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgTFREMQwwCgYDVQQL
-DANDT08xHTAbBgNVBAMMFEdlb3JnZSBEemh5bmNoYXJhZHplMSgwJgYJKoZIhvcN
-AQkBFhlnZW9yZ2UuY29vQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEF
-AAOCAg8AMIICCgKCAgEA75aMnpLfIWAuzX50072OR9Y5BxowLXggUE2wvTrUFwAo
-1q8GETXK80xdhfZtMCkGlMvk8ldA3c+RPTXJIvjoDTGZOTERGOLxB32kSn74fPtu
-yRUqktGMBI7JQM6My27owJtApIif2Xn7q8Qo8YguBmbzOEblO0FYVkd9IopePtvt
-r/GvJStY0lNIQpXQEzdrK+QBIeXlBG1OiTswC2BU8MAc1SeZcF4fiLnPxT0m9KLF
-60iIJ0WFBAmNYP8sQEnsEJRPzPm+rQhv1cAUzNPya9ZOubVqcHclKuzLfd7HOaJh
-I7VPBjnd4FFMUzz3fk7jvT8uwvN5JeaU1V3g22bX/EZWmGchSJpFVCuxGdqj3TVn
-eSh+D3WodzTobXC8oXxrGL6kDDRjYnLA74XngAFsDuT7yGpQoKQ1K3TL6Hkhwk+a
-UMHJ3zi4ccOCNaC6TosJu9eNgXG1+SIBbKmBR59ltd6aLVlTk99nWBN3HsOs/Pnu
-UITo36PdwouBTcKV6zQz1TezUsbYdQVfLQs/zvo88SmpNAuG7gcVXMCdd7TSGuk5
-Ac9xihO9hS8mmZouBymkuaugcji54vv4yBYoDXh2km9Ls/Ypcb5r/4jIh4DJFfs1
-5yqzq35smIl5cewVn9KEaETBetZ3Z5MdY8hMuZWPgPhqVVDRqOsnjpk5JmI2AQ8C
-AwEAAaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgB
-hvhCAQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUw
-HQYDVR0OBBYEFIz6a4Hb4whZiQf2JYpAERgk6P8yMB8GA1UdIwQYMBaAFEsVx1LH
-4pB7xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEF
-BQcDAgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQAZZBJM
-hw6dFMI3b9BCE3i49B2uxjRqtFRpNtOZoPgjVJzWvY+lwpJOXFVShQG67rt53xMM
-SLcZvejQGJlQLLWJ0/BKDaeWpsrsoWfp9uNsy0xyhfeLxvsmQjdCDBLUC1/6Trhe
-zVbSsQ7556wAHdPFS4x4BvssjdRPVmqckwT5GE5E2ATXYEuNHWDWktlFcCnaoc/P
-lOSDQ3qkkVF8sFJnW0nH4nbQQHvyb0gzL+/MexIr3mqm93bXZJN/xbJ7jAgTPLwe
-TWU5iCmdJPRxKOhuq6PUP3tJJs1ImT/1+6Hj+VENpOvwV2aeES9ahVCUYZwg4MgF
-GTfNribVhpbzTrCALdGH7CBnXkAHYUP++Kr5+C9jXgfhesOGZCLlp1TAw0jrhNyf
-bcCpRi24Vgca7b4G9nCxH7agbUo/BU31DEzlQ4K4PTh63NTAsJ4piXwSIFotaRNR
-K5N84EN0D/EXlPFUafg5jC19S0RyoHw6SJ7zw5xhj/gxmo+ZLM4oLqJfT3ZX91/V
-nNwc4O/cyoICooMMWnCfw6D8nqeWRNKzzN5MCjWL9ewmfm4L4VMKmzWzqKIGAuxK
-Q33T/+YgeVsQFQEDy9+aD1rc7X8NHIY+VCEn7ZN3KbaZZ4XnZltn8NbsGLNSbda7
-XxD83EHKwf4mORRn5aX+/5biKe0/xCpfULYnvA==
+MIIHQjCCBSqgAwIBAgICEAQwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDczOTQ1WhcNMjYwNDE4MDcz
+OTQ1WjCBkjELMAkGA1UEBhMCVUExDTALBgNVBAgMBEt5aXYxDTALBgNVBAcMBEt5
+aXYxFDASBgNVBAoMC0ZpcnN0QnJpZGdlMRMwEQYDVQQLDApNYW5hZ2VtZW50MRMw
+EQYDVQQDDAppQWxleGFuZGVyMSUwIwYJKoZIhvcNAQkBFhZhbGV4YW5kZXJAaWFz
+aGNodWsuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0cMdcBol
+tODrqewlEgWT8CQcPgOeMdMisUZoHAtH5Bs8eqLJJUJomtyUXdkH18O7enMtBDqi
+EqmA3GrPSd/HY2EWbjf6NIrxrIwtsCqG6qI6BqeWdnY37+yAxXyqrGVHOoz/eeAD
+rSN6lojFJxg46M36HZUA61ztdJ/ux9bwfNZaX77d1Mk9YwrjEhJY3C8oTUXLX2Li
+amo/NqE2RNfJFWuMb1b+ZIfH8bzX4SOL8l9nQxSGtX/f1wJFULQjX0clj7RXN4Gz
+xoZls6hUVJZ3pw/47YnW2mgBVuuM/244Dzos3Vi+T2efKSFwc2o5UomhzzSQ/yW7
+Kn+dEYGet8LCg/3YSq8xiT3d6FMds/mWplDpSn6RRm9SoUpi2V784XGCFlFdia8K
+LTwWfn44/+KioK2rD9KIZVsRkdmrChXQJ9mPMAijb2qSoZtXs/0vPCdyqLce7xix
+DjRf3k6fS+hUyY75CnsKWWmi2CMqL5sCx9y+s5gfE7oCMb51Dg0gD0spc6neFjTQ
+rIhtDqk37ZL788vN+/LXGbzjzA67pkjBVsh1Fc0I6oZmoWbtyob1S6c6XoqdED+w
+9aa7hTz+zC45/w73qJxVs1sLj2ih2lKxlIadXhKZ14IVSQE63OCkvPcB1kICpRSQ
+9mtmxR42+na0b47b+xhj+Bzg4rNPWqujhZsCAwEAAaOCAX8wggF7MAkGA1UdEwQC
+MAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NMIEdl
+bmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFF7p5m5zIoRC/HUR
+tARVpBn+gKeYMIHhBgNVHSMEgdkwgdaAFKLXRNeg1gOsmDESiwaINSPYsWGKoYG5
+pIG2MIGzMQswCQYDVQQGEwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UEBwwES3lp
+djEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwdQXBvbGxvIEJs
+b2NrY2hhaW4gRGV2ZWxvcG1lbnQxGjAYBgNVBAMMEUFwb2xsbyBCbG9ja2NoYWlu
+MScwJQYJKoZIhvcNAQkBFhhyb3N0eXNsYXZAZmlyc3RicmlkZ2UuaW+CAhAAMA4G
+A1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0BAQsF
+AAOCAgEATRyW12JD2Kqbi8nQ5RyklwSunwSpXjWEpbEnlW0GmQTJb0K8LjXxYmsp
+19so/DCoyPOakMndGoB6PwtxZv4pF1HBr8WM245IM8CFTNaLW61SAaGLgAgBDrLX
+v6VxDDodpu1hXHOl+MWOU64Tm6A6QryL8yPqKATnIKiRMZx+zyS0BBmATMf0co9h
+maMFXiST5Lv/Z7+7NRkeboCXxV3K9D/Za2p2WSJqKdx3azfOOLCG2++8+7W5pB6n
+hZSrX1Ltu712a6id8gXmMaKNF9lABjxhk9R3jXrg1CaYxENpqiteffhb/3ZkfNjn
+zKYcgKxVWGOkc+ezyLdYbqsoWQXT8bIaHNo+mE1xrKSDcSg0KNdvJCTtyXF/qQ/H
+qjk9RTI13U/YcKP9hKacjIpYCGrpmYidceqK13wkhkr07R8kPWVEWap8AgDv1nTT
+2qd5kyZH5DJHNrVCxZJlDCPOLbctwudHr0OpeO8VdXiV1gM1EjQvt9IHzd5UWPn2
+Y+mbYNSuzFJ+jMmRERGfKLUd5Ys7WWrvv7+RsQ8vaMyxbYsr42C0JsLdB1Jx4KmC
+x6BE57KVhW12aLmKD4nIvqZ+iEDjQUcBtd26ZbR2Y6jQwXFi33vO3ChihcR1YsWJ
+OnhcCg0+uMWAFYDxrM8hUEJjWjFVwepmcKAZfdEYxHqhpVJgDP8=
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/2_2.crt b/apl-updater/src/main/resources/certs/2_2.crt
index 324f7fb970..a71984c7d9 100644
--- a/apl-updater/src/main/resources/certs/2_2.crt
+++ b/apl-updater/src/main/resources/certs/2_2.crt
@@ -1,37 +1,41 @@
-----BEGIN CERTIFICATE-----
-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
-XXpr1M5IhZt0X6sHYkasdl3m/b8=
+MIIHRTCCBS2gAwIBAgICEAMwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDczOTIwWhcNMjYwNDE4MDcz
+OTIwWjCBlTELMAkGA1UEBhMCVUExDTALBgNVBAgMBEt5aXYxDTALBgNVBAcMBEt5
+aXYxGTAXBgNVBAoMEEZpcnN0IEJyaWRnZSBMVEQxDDAKBgNVBAsMA1BNTzEUMBIG
+A1UEAwwLRGVuaXMgRGVtdXQxKTAnBgkqhkiG9w0BCQEWGmRlbmlzLmRlbXV0QGZp
+cnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAwS4P
+eKtPyBIERclxmoeHz8TdXcWCv4WnlGKMjcdPYD+pvIj1qXOO3n4V6PznCEeJ/Iv6
+XpwLR/fkXZFhqzKeZEh32KLs058BN8VhPwZeHXp1Fy3/CJaD6A/MnYyNK77+6Cfm
+d8SxRPzF+2NGtbQ4FwLs483Ux4JDMuY/4lQ79euYEuqPlauxoDhQ9TQBvPOfakvv
+U16a0hhJhm791cpLEeLnmeOodIJZKyWQPrt0eMgDt0chn+u2acBEsFva4xCdpDt/
+YytqxcP1pBV2KG44FIn8MvWMNuWam8wDwJg/DtecDfa5RgO6JjpK+mtPOZrjGskQ
+/LI+9EjApPoEsVIqnNl0WQ+usoggtFi+Gc2JQUcmwO9WjcGtMwUhGHfz0XhpHdFZ
+8QWMqxwcO2z9yrR7R2UHN8E9DsGJdDlbJMH1MGjggBo7rBFF8bD8FLOxCjq2Z6Jc
+2myUr99amwphqkw4GqR9zm+t2/CDyNNRr68AGO3GYHVx0I0y7HYBuT94X8EC+mnc
+WOMBwTlHc0+ZNswN20JLM4ALc5UGx2MYGRufaP36wQvM1cloXvzJmMq5mdKFIj9Z
+Xi1Wxc3+M8aV3sNAl1H1K+A7Rn/KoUq1esGgQ7yM06klLBixbWyZmPIIF8Ux4wsA
+HFiGygTwZH9Hlx4+KOep+pXFbWpRWZsHfiyNKrMCAwEAAaOCAX8wggF7MAkGA1Ud
+EwQCMAAwEQYJYIZIAYb4QgEBBAQDAgZAMDMGCWCGSAGG+EIBDQQmFiRPcGVuU1NM
+IEdlbmVyYXRlZCBTZXJ2ZXIgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFL95JPonHIYF
+cBtVVrRepzz1VhJgMIHhBgNVHSMEgdkwgdaAFKLXRNeg1gOsmDESiwaINSPYsWGK
+oYG5pIG2MIGzMQswCQYDVQQGEwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UEBwwE
+S3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwdQXBvbGxv
+IEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxGjAYBgNVBAMMEUFwb2xsbyBCbG9ja2No
+YWluMScwJQYJKoZIhvcNAQkBFhhyb3N0eXNsYXZAZmlyc3RicmlkZ2UuaW+CAhAA
+MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATANBgkqhkiG9w0B
+AQsFAAOCAgEAlvhFCgtTQeZE4YJjGB6+IbC4i0OfQIjq/CIBgx+eyUmMSryypl+r
+9ewzQowd9DwlpQQ+uNQORKJi+28dKRLWdgbSUOOqNERTmaAfQqpir3/S5dCq8cmM
+SsFnL7j7gFXwwwipcKfxi2kR8IU2VcPrq5Rz+x8IsYTNdctcoj6KNlss8vkK2CCl
+iYZ4VA42whkHkjClnpq6RYbsxYw/EaOCZ1wYC4wWneFC8uaOXJfJC0yhrMImCGZ1
+3gtl9Z66kd2NfVi6UXHCy58C1t5HZwRql/Bef1szH36HnkIJ1U2DDc5Q2X0OFU//
+HwdpPp9KVVCW7Z4X8qWXVg5w+07ZKf2F/4hW5blO1RkqprUSfxCtVSeYOQHDA2Q2
+2Lrv3yXHPuC6KywcKCro3lEBeiz/maYDkHwmSXmwGf/mNDePE615zmSMRCH9yhkk
+2i/pjfaLD44FKvEuLFbGMt+MDot6ttdeg7e2z9K9KMWee97p990JStFIQuX/z7JE
+QF5MTKbc2wgtLax50DrIlTqp4fL1EhPixK729xTLa2tTc+5jH9cpINn0x4vN4HRd
+NOxFmqQeRPrpW+Qnlhq4I2o+O1gRh2aWEKGYasU2I4mCqXq7PTe/GKfdCmuilUSF
+lMidT++RKF6t892FfkJLDCJMno2YgC2d+AUfXoff3Ud8gIgTtRbBLA8=
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/2_3.crt b/apl-updater/src/main/resources/certs/2_3.crt
index 5806a784a6..24db6d89fe 100644
--- a/apl-updater/src/main/resources/certs/2_3.crt
+++ b/apl-updater/src/main/resources/certs/2_3.crt
@@ -1,37 +1,41 @@
-----BEGIN CERTIFICATE-----
-MIIGdTCCBF2gAwIBAgICECswDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTIwMTExOTE2NTgzOFoX
-DTIyMDUxMzE2NTgzOFowgZoxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQsw
-CQYDVQQHDAJCQzEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDjAMBgNVBAsMBURldmVs
-MRkwFwYDVQQDDBBTdmlhdG9zbGF2IEdvbGRhMS4wLAYJKoZIhvcNAQkBFh9zdmlh
-dG9zbGF2LmdvbGRhQGZpcnN0YnJpZGdlLmlvMIICIjANBgkqhkiG9w0BAQEFAAOC
-Ag8AMIICCgKCAgEA2C813+Igz41/ihwSICa0z3HlYhRbRLyByRcKIFp6T/gvs+Mj
-+fXrtp8Oodg64mekFW0bgehpqxyYYXkKIz3ObrkK7IUe6CjsctgIY4vdJ+tdK3OD
-XCztQNCGtFfqV3/vLv47bq0lmTM342ekWR6NnUiMplIFFdb5VzjJmFQMLZRA6bYn
-DQ4+6ml/RtypvVlhc0ey3bwKTMkpJoKylw6LXx6XMks+Y0Eyk/07bQKINOVq+lxS
-4MgHsHTdLzd4v9lFldCNMKaMmx99uENDe4PuUVYAuagoQ/52sKEvXpoZJPtNOs9V
-YaPfSnrfEyVHJ+M2Fr1ShNW0+v6WDzxjyLufd1514LnKIkXgALVYJnAjL3dxGdKf
-Zk8LcNkDEDASceK2XXQTA6Yds86T+td2dKIsI/yGBSpp7mp5qvOsprIdx0nK6bbp
-v+e1BZLdtgE0ZPjy0WAkqqZIt4W7MARmkjX8x5R5o0AGBstrDIQpLpHzGomQWVt4
-wEFC3M4Bu1Det//ODCbdXrVXWRirYUo4h4cYywGTQsEIV9yhAIOYntdSVSgRx9aI
-+YNi30UVzBaCQFr2fNugk0YvKLr7lZ33tLj9gQBtTZjwo6/YcDj715VtY74IJTyg
-mMbTE5N6qBrklO1dEiO3bHoiJeuiQLcfW0uIIaVlCNtSDXxQCqOBo0UX1BsCAwEA
-AaOB0TCBzjAJBgNVHRMEAjAAMBEGCWCGSAGG+EIBAQQEAwIFoDA1BglghkgBhvhC
-AQ0EKBYmRmlyc3RicmlkZ2UgT3BlblNTTCBDbGllbnQgQ2VydGlmaWNhdGUwHQYD
-VR0OBBYEFNIHdAVizPNxy3KvQgALrCXMCT0bMB8GA1UdIwQYMBaAFEsVx1LH4pB7
-xTlqpWzKuIiy/MktMA4GA1UdDwEB/wQEAwIF4DAnBgNVHSUEIDAeBggrBgEFBQcD
-AgYIKwYBBQUHAwQGCCsGAQUFBwMDMA0GCSqGSIb3DQEBCwUAA4ICAQA6Ssrhwly9
-M63egy/8M6FqPTxbxKb+0QSOI6MD0IExAUPK7VsAJinT9BkV1y0kZQyJ6AIihcf/
-z3p5vkrrlhTmEDquGV5DjSbAKZUA0GlWESMfl6bdDHy2Mgea5QFb5INIjFlg/KXs
-i/IMTOOL9NEDW/J4O/JXkrVpMmpvxXzxQPyfP/XqukykZaiJ4AiVhtKtTSJj0VWp
-JYDlEQN27c4s91JUzC5Gx3oQABGjEfFsdMVZ6CKlHU7nnpX16VQW5kiInPCvetSM
-7ai6J785x9CUQD+yo6nglVqf8I/C+omVbZsOEdCYmKigOfAFtpSJmzDo6IfEsVzg
-hrSuuR9k8OIAeMgKB/Uk2R1vpg3ME+B0NfVMeYHcpnbtgw7ZkHA2ZfTQe7eT1Z2Q
-2pBLQdCWN73FQ1AQuJ/YqddmHQzZbvGlX6sBBsm+hWeAWxwP+ivEYXGyApYcjaMG
-JQC2zeBaas9xQfzKJVkwDyqe5B1xWypJNf0gavlbc/WXq/IVZZqyHVIYlRf9CAFz
-U81XtQtbe8RLZ9yxWTh+1vI/nKHcFRKKH2hGQNhIr1XyZe3HTktQyzgM2VmvybV+
-nBc0q5wGR/w/15XDxKfcLdVbp9ISVJ7+DR4HjZHepLIuR/SBCqagBh1jfR6RJraQ
-zwNUEFI6YENbZxyA1Onbw5tIfpKfAC7m9g==
+MIIHSjCCBTKgAwIBAgICEAUwDQYJKoZIhvcNAQELBQAwgbExCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYD
+VQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEnMCUGA1UEAwweQXBv
+bGxvIEJsb2NrY2hhaW4gSW50ZXJtZWRpYXRlMScwJQYJKoZIhvcNAQkBFhhyb3N0
+eXNsYXZAZmlyc3RicmlkZ2UuaW8wHhcNMjMwNDE5MDc0MDA1WhcNMjYwNDE4MDc0
+MDA1WjCBmjELMAkGA1UEBhMCVUExDTALBgNVBAgMBEtpeXYxDTALBgNVBAcMBEtp
+eXYxGTAXBgNVBAoMEEZpcnN0IEJyaWRnZSBMVEQxDDAKBgNVBAsMA0NPTzEdMBsG
+A1UEAwwURHpoeW5jaGFyYWR6ZSBHZW9yZ2UxJTAjBgkqhkiG9w0BCQEWFmdlb3Jn
+ZS5kemh5bkBnbWFpbC5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
+AQC20ZoUxcjRfmPpMwXfjS8Q62fpac/SQJe3o/l76RB4R/nWTKFfYxl0rfJcAl+i
+0IJECp4JuVta+Bsq+FPvY7lE/sdOBamQqkJGyLIn4gy9e5Bt22oxpzmb1sedgZyC
+Gcb9nwxRM2Gnu6RmDGZfZWL+IJUelb5PSzBIDWDaRPuHYvYA9WtDyLWpqG48X6GA
+i1lZWhh6HJOFfq1loTDlXdQmyg7sM1ynuuoZg2ijPYUNHiezJpqN8AiaKEzEQARJ
+etYpxkXXn8rSah7iH/9kolcqFeFwCvEOH1uItXoR4S6I6oHV6GEvHiuIvyZdcPCv
+7LHoREBo6YE4HgwCqYnJgSVQhEp3geERUvvfRII+iOCti9oUyVX9MZOKBCRt405G
+qaW3huCQOVeleKFDjP8NAYf9KQ77ODvB63895AkdelPq4QpD8bfALpNlMR/5r6Ht
+/zpj7Ks7kuVlKCxphyj0r8zGiHSujlWzR8UUAZ9wImEq0LT4SDEZICGWEX+ktWBN
+prr2vLPjgNaqpC43lHmydW6ALdRczeVcHj9qHMl6PaXPtxBPabuK8ZcjW63Pmv/5
+F9ZDUTkzr2zPN85Xthqf13Vz751Fk/U1F8N2x2ZDWUm+kzo2O+qGLvbE3fh8MK2L
+z7SVAcqAdleAbp8HlErgvgJQIQfLAGe/vXHU6L9Hi47VlwIDAQABo4IBfzCCAXsw
+CQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBkAwMwYJYIZIAYb4QgENBCYWJE9w
+ZW5TU0wgR2VuZXJhdGVkIFNlcnZlciBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUvETS
+Y5/CS3XSpWLozInXqLlS1EEwgeEGA1UdIwSB2TCB1oAUotdE16DWA6yYMRKLBog1
+I9ixYYqhgbmkgbYwgbMxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0wCwYD
+VQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYDVQQLDB1B
+cG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVudDEaMBgGA1UEAwwRQXBvbGxvIEJs
+b2NrY2hhaW4xJzAlBgkqhkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRnZS5p
+b4ICEAAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMA0GCSqG
+SIb3DQEBCwUAA4ICAQAHGZxXRsQ1fq4bik2/28T9AtZplUdhS6mhM7ysT1ycnmiF
+sD+n/P22fuPxFbMyDTlHl6TEMd+4sxXeT4QcNTy03xw0rDgOWkMBmqCMJcO2T8T9
+8hOgV5c+eo0UjNboXP4V+H1huO9qc5TNwo+v7zsX0DR4YP/DPlqYiZIlV2AaSqXR
+Lz8UdRDe8TIs36a9nndVmi0Ie4FmfRB5xlomICotjKF0R+tDt36v4IfzppwYuqMD
+2lpsaLqqLqRy0xNO2bZQLTozV30oupfz3szQhH3Zq62TVKj45FA4JJN1Qzfa7H8I
+V3GRNoxvUqvmAbizDZYgEdrQa5GonDWLH13GDe8fQftkUF25PF31kH6EeCsNX40C
+xnZLXOrnbiqJkMvW+812zddgPDquA34yRfFMNCjVHs3O8YDgwnrUfUYlz/14ijOG
+CoURLokN1o/zjx7w4S5YrAP15it2poAlDOrPhVkmp+QoSOEumMqaJ0kKmSBdAQ3B
+pPpMPonauW+gXBICACYSe/PFCONSq/77U5rPEFg8PZBFI+rW7G3/sSM1lSJQuxc8
+NymNMus/EgAm7fz9DXPuankNcsEx7px8gFCvHQp5JRv5jdSurvVJJHw7voPhNGmo
+EQmJIEFdad/ZIdMobKyIskiN+uyZFARo7LNG/rRVMFv5g0B4x8vgmtGgTaAi9w==
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/CAintermediate.crt b/apl-updater/src/main/resources/certs/CAintermediate.crt
new file mode 100644
index 0000000000..e7dc8f1011
--- /dev/null
+++ b/apl-updater/src/main/resources/certs/CAintermediate.crt
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+MIIGSDCCBDCgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgbMxCzAJBgNVBAYTAlVB
+MQ0wCwYDVQQIDARLeWl2MQ0wCwYDVQQHDARLeWl2MRkwFwYDVQQKDBBGaXJzdCBC
+cmlkZ2UgbHRkMSYwJAYDVQQLDB1BcG9sbG8gQmxvY2tjaGFpbiBEZXZlbG9wbWVu
+dDEaMBgGA1UEAwwRQXBvbGxvIEJsb2NrY2hhaW4xJzAlBgkqhkiG9w0BCQEWGHJv
+c3R5c2xhdkBmaXJzdGJyaWRnZS5pbzAeFw0yMzA0MTkwNzEyNDdaFw0zMzA0MTYw
+NzEyNDdaMIGxMQswCQYDVQQGEwJVQTENMAsGA1UECAwES3lpdjEZMBcGA1UECgwQ
+Rmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwdQXBvbGxvIEJsb2NrY2hhaW4gRGV2
+ZWxvcG1lbnQxJzAlBgNVBAMMHkFwb2xsbyBCbG9ja2NoYWluIEludGVybWVkaWF0
+ZTEnMCUGCSqGSIb3DQEJARYYcm9zdHlzbGF2QGZpcnN0YnJpZGdlLmlvMIICIjAN
+BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAzwGv7VvtcFya4tAH/tConnhYhRxi
+i11tPIvtJj8hmo6ptCFvAZzkiMGZ6y9HR827R35AmbZbzeT+oIoEmxScF03yQGRl
+rbjQD19D+Dp5w4vRBQupQCGVX2ujD4zbeQliz1olO2J/GSc3wHQHMzXn/Nj7wVGC
+XZg/ilvK5mIZlVxZaGC78lR7E7jlgYwJzg+pTwVN39Vjjhzzvq8RproRRYDcSVKH
+ZSegRPMvt+haN5lsQjtiL0XXzwBbAQptLUXL1mAFj8qkc3OL4oV8llHnZVkBgkQY
+PVR/096jbdmYA0a81ATYxrdt6NQ61xAGMvcy3FgzLMbHoinX6t4yMwOqjvXOn1CS
+QTnEgkpTXii5/lXKNwWrj7CxNCjEMpL9qFLNrRTVjbD8kgp5+sX9QZe4efFyx3DO
+PU9lUNxgV/ysT9eSrPskV9/cyLNLnS5DQyX1Ngj5QoDRAn0i+3KyXg7yN9XUzKIj
+igG4jJ6ExsEvyRjVA6HxeOJuJt1zcdhQeO7N9Z6fbAjXNWKazV0/UAHKQmcQvy9k
+WoFDzLNf+huhGUP+1iVJh9B8nTqgBwYI4dabRwnFqTNENn2J8j98fW32zNrn/j2x
+Xr3VYYzm/eCx5tY2R94nosfIOfqaxlWWJdAHuhjXpAtgkhiCg8jnCvWrxmSkZryX
+dRACq7LYKzWzxZUCAwEAAaNmMGQwHQYDVR0OBBYEFKLXRNeg1gOsmDESiwaINSPY
+sWGKMB8GA1UdIwQYMBaAFFTiHmQb8UCtRmTPGi744iVtwRmGMBIGA1UdEwEB/wQI
+MAYBAf8CAQAwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBCwUAA4ICAQB3BOuP
+j5QzeIJaEumnYMgUBGKijJNZynO6VwQvBaxykXBuKmbNzV1QyW8AX5AlScZ9DDuS
+m74ZFZNBkb1NJURi5uDSXPk4mANCij/m4JMk1li9DRgRlT8gjMf/mpJot8S6fsud
+s+W7GgsGdrElMzQmOkv5jMZuV457+2fpKOuWfCjCAsle0TKZcA+qi490sLzDVf3s
+umX+HfYVduauTePqjL3SHQcK3zqXCYNgQr1FmODyBor3lJzMFb9RTxA752qogZEx
+Ve5lbfIXUNvwxJBh8mipvK9koYwOSlBrSpaI9vwM0+Ur4RILgENCD+7OnuqPA2mp
+YDgwcFeGbJu05A1rUe0akp/LOap8NvR4UehWnKm6myj4Dnuc1woJE9ZD33neQ62l
+vWG2edFYJPOF3xS8cVJ5EfqA+4XpFvlSi5hhH7I0sjCPOHDr5PDBztUb6pWOcIac
+IEaWN4mv7NuVJL/M2e3nrdTI7CLb3ahW8saeVisUy+JPfk5WXULng2xmSJN4MlF1
+S5C7GO4Qmacd2ddsKpFXd1Psc7Xb/NEJqBl3S06uhw4bPS5TzBYq5kdQKKKgqtGf
+/1PSiwGyKg14fuoLmlPC6WAWh4GWWpcssTPZAadqkw0fBNAXS07SYGJmU0ryLQ2X
+RKDX2/q8CQLv7+TOilSFEjmf5vLGpetD2RfMlg==
+-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/CAroot.crt b/apl-updater/src/main/resources/certs/CAroot.crt
new file mode 100644
index 0000000000..74a1894012
--- /dev/null
+++ b/apl-updater/src/main/resources/certs/CAroot.crt
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+MIIGWTCCBEGgAwIBAgIUFz5OcQaPnWOzsDgWeYn6ce7k/iAwDQYJKoZIhvcNAQEL
+BQAwgbMxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ0wCwYDVQQHDARLeWl2
+MRkwFwYDVQQKDBBGaXJzdCBCcmlkZ2UgbHRkMSYwJAYDVQQLDB1BcG9sbG8gQmxv
+Y2tjaGFpbiBEZXZlbG9wbWVudDEaMBgGA1UEAwwRQXBvbGxvIEJsb2NrY2hhaW4x
+JzAlBgkqhkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRnZS5pbzAeFw0yMzA0
+MTkwNDM0MzZaFw00MzA0MTQwNDM0MzZaMIGzMQswCQYDVQQGEwJVQTENMAsGA1UE
+CAwES3lpdjENMAsGA1UEBwwES3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0
+ZDEmMCQGA1UECwwdQXBvbGxvIEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxGjAYBgNV
+BAMMEUFwb2xsbyBCbG9ja2NoYWluMScwJQYJKoZIhvcNAQkBFhhyb3N0eXNsYXZA
+Zmlyc3RicmlkZ2UuaW8wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCk
+qjPeucp7aY4KBR0GIBdIWhAzu9yylLqJ3duwLTAjq6e2//IFnox1AIPH5vecvcm+
+gyseEh/cvfKvKxZX8zr2I0uYKePQr0o2oLwbccJiQ8nSLVsNbrgTFhYP9T994Ob9
+1xqlDjkltL2FNOj3lz7WUUB2PjK1Sc9xGcmT+3Ra+r+3hgTIV2IYd2KAN9JQVOOH
+Cjhb77AlEIinSvO6GtpQA88NlMrl0yR5cl+V7KbcLZgXGyY3OuTL+f0FmO/F/gmy
+RP0tgMijJ5ilDNuulvMg3xQfWGVhaAkRhfSuvtmfbug76S75ijpvP79OkjJ8C0ej
+PmRNWtWPwQABjBL0Asu+NqnFLeF0NP9Y4NBzDAvIC8ISdHDQ/NoYrhuOllu7MU95
+hOUv7AdZsMob91/Hx1yP49TjPkwxfvHS2NjdKJbBOA5+WLmDs1iQWjAV6awtU4nt
+Rwbfretw0BLPyaImuBLI0aNEcI4JYDKz8mSqJLNhc4AR4v/IXdLOKbI15Ts67cbz
+IBWfVZKsnZmo8KFOSbsm+pLX8KsvWg9ITZNjp9/x13GnCcgVAKl32CuB8m8X3cNi
+55cEk6R6AoIkAHCYBgJdlk9b41U/Kj6BR+4dNkhKjk8l368uKUKEnkGyS7muDTW3
+oXyhNoPF4oY/jS9HXZhP4wCOplfsq+ybUJNqGwU5UQIDAQABo2MwYTAdBgNVHQ4E
+FgQUVOIeZBvxQK1GZM8aLvjiJW3BGYYwHwYDVR0jBBgwFoAUVOIeZBvxQK1GZM8a
+LvjiJW3BGYYwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZI
+hvcNAQELBQADggIBAAUarn40VJFo3AknFZEGJ8vqV5CWhMGHb9CIp/fLNm5XQZdn
+r6GcUh15xxv4E1A+VYmjRr/jgtCLaYD5hd9/DdSPsRuHQ5TTY1R3sE9gloXaMibV
+cUhwFu2rwZu237b0oNr7HcnIwleV8bK52TISvFGWGdkcPIUCS7+PLj+PA5EbY/TL
+Rknty1wKgM+vi8ILTWwixtcPmeeOejWUwkYuRjTxZoXFxqoCX/kNpYcHeq8kLuQ8
+vl+KWgnVFyFQdfgvXy8PnQIR52eiqgWNcxbWo+HxKMmxJT3KjGumvO5hLnT4cPos
+uSdA/aKDOA1Biw39fFiy6dl1Dk6Tfbm5t2KhT6UJLbBGs2vn6fyHhFdQXQ8GQbVP
+9M4agj/keZdfBN/XJKwKmESn1x0qvrEt98sBrJkNhuuiPGyLzybm4hIdOWNPBhae
+LV5ysuP/KVsvO1VFIkYUYlbz7W2MobwWeQBWGViBDTmG7CMi+TqTXzaHlm3eQcaJ
+0JD5FycpYA7B2EUTs72JtcxFBZgQ1Q6jRpsu81kShNNrxqf1lsjK++CQBT/GowtN
+eU2fvJg/F/hTVjvtBI4viB8JgZ5DiOm1cKHcRHSETf8JssDyJlC2DlfAGuyDRgtJ
+xYvzvkZv9292P2s9asnsrmG3muLs5LdIHie13mJOdFQ2EQVQ0XFOn9qq8JQC
+-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/intermediate.crt b/apl-updater/src/main/resources/certs/intermediate.crt
index 5d0832b4bd..0fee91609d 100644
--- a/apl-updater/src/main/resources/certs/intermediate.crt
+++ b/apl-updater/src/main/resources/certs/intermediate.crt
@@ -1,35 +1,36 @@
-----BEGIN CERTIFICATE-----
-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
-loQcZYg/Dw==
+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
+NSNmMr0H
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/certs/rootCA.crt b/apl-updater/src/main/resources/certs/rootCA.crt
index dbe28ae482..5038aef6fc 100644
--- a/apl-updater/src/main/resources/certs/rootCA.crt
+++ b/apl-updater/src/main/resources/certs/rootCA.crt
@@ -1,35 +1,36 @@
-----BEGIN CERTIFICATE-----
-MIIGEDCCA/igAwIBAgIJAKcFbXmIl10mMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYD
-VQQGEwJVQTENMAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoM
-C0ZpcnN0QnJpZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJz
-dGJyaWRnZS5pbzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzAe
-Fw0xODA2MTIwNjQzNTNaFw0zODA2MDcwNjQzNTNaMIGUMQswCQYDVQQGEwJVQTEN
-MAsGA1UECAwES3lpdjEOMAwGA1UEBwwFUG9kaWwxFDASBgNVBAoMC0ZpcnN0QnJp
-ZGdlMQ8wDQYDVQQLDAZEZXZPcHMxGzAZBgNVBAMMEnd3dy5maXJzdGJyaWRnZS5p
-bzEiMCAGCSqGSIb3DQEJARYTcm9vdEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZI
-hvcNAQEBBQADggIPADCCAgoCggIBAK0Owbv0qmLsUzLrfcOGObNBXSVNplD33+is
-H1sjV3lAjHIWIywwLZMXcCUM8WWV32UocVnb4FPO2d76IWCviZAl54atRlDfL2rv
-H+hYUCSXV60B0+1uDcSPr4+tq3yDgChvl73OtQDNa48UV9x+jPmUV3LGOrN/oqbU
-8yNt7m8//gKcwQSxjWe6+VT+ZIVVlbVeUG4M+qWPaQMZsQZIElPjeaF9mz/dFImz
-MwBFmCA7k03KaX0Qn7XKHrkhp52a+oa0sHk2F2B58NaQPwdUwUF9D6kB2PjD+Ev5
-RfF8gNdqTmY2Ufwiy0vCMB3micEJ0nDHK9/u7EnsGspHExvYQ4/x/hVktL29WWwv
-OHqUd5cmsILGS4FuyQZ/jmZtw8AAhNhyImhLwFv0/iqvOby/lhmKBeSEYA8O1WCr
-6by4+HiEzXmZ4MRokq/QxZKJ2WskTs8RL+FuzgtG7wvGkzRKmz5G4u+DzPsZs7ig
-WV9K9CHsl5HCAn2FSCidRnmPen7592THzl7W/7dT9kmmA19dVtIqV86NUlB/5lf9
-i6oBeHXzBnreAtKuLB7XiNA1tCqo1dYPN3wNQEcqracbmM/RHK/BBfxAJvofgLLb
-SN4gKj4mfprhT0V9tOFoWBZ1haFzQD6Oom3KcA0kjX3GESmld6mvxHLeKxTFvpoq
-JgwiGxHvAgMBAAGjYzBhMB0GA1UdDgQWBBQC945QrkpuLT0cb9kkR+WXQXzKdzAf
-BgNVHSMEGDAWgBQC945QrkpuLT0cb9kkR+WXQXzKdzAPBgNVHRMBAf8EBTADAQH/
-MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAaozG0E1WLt2MpAx4
-8c85BnYU2tNND+1ZU8SPYqHSOE3ZrpWnZwbOKiJGZ2jT33Sr/MLjabR9XQWZK4H3
-X2LasuIb6il/aPiJ/7sl3VLnu03wDa7YraRdpPL0B7M/zmKb2VjnsnrkRw1GHuKO
-KnA6f3EhwCnUfARD0GSGKBvS+Rl+qhfhqXAN/Lpr4sCZnvaxfADwCulsh0ZsrIcw
-YIZtOVkvZvI87q0txbC4K+TF5yfhKDdD0zuCnvQSEuNsLDsPx/S1GhhG4mXtJyDY
-GGB9e1zh7GMRhloBkLgMd0g2FJf4EEK6dcHDHLul3HSyIsikr0f8gaOIoFFPD8bj
-wno7npDSFkkY8zwTkx+a0y87CQSnj5Ko6st3ohZLO6g/KijH00cn8WEgxEdiG7Vw
-Y4WgezCmLCjVFnLS4VRnwZW32iPZjWkwF6/FImSuiAIgZfT9q5n6dCLwHHUxPu7Q
-V3FEA5mgJWZba/fPscfoa163pPoPaxZALBTLXdgVEv1KQUELtrwOGm5s796kj7VX
-gxlj4TBMtURXKcuns7QAEKJDeKhnv8R5Oh3j5MkYRvTcyE+RfW5ewJRtiI2lv1ds
-pOW3zIgJWY2I9HVHUDXmbskPMJjcPZpv1M6Me3id4bAWDP3I1SHu0mzqE5qXy5/l
-5YyJ/mouRe1kokM1lAYIrb6HsLQ=
+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
+VDM7vPwN9QrsYfJQvKzTbzaOKCwko/0=
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/conf-tn1/updater.properties b/apl-updater/src/main/resources/conf-tn1/updater.properties
deleted file mode 100644
index 926524c39e..0000000000
--- a/apl-updater/src/main/resources/conf-tn1/updater.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#### UPDATER CONFIG####
-
-# Number of attempts to download update package
-updater.downloader.numberOfAttempts=10
-
-# Time in seconds between downloading attempts
-updater.downloader.attemptTimeout=60
-
-# Path to program which will execute updater's platform dependent script for windows
-updater.platformDependentUpdater.windowsRunToolPath=cscript.exe
-
-# Path to program which will execute updater's platform dependent script for linux
-updater.platformDependentUpdater.linuxRunToolPath=/bin/bash
-
-# Path to program which will execute updater's platform dependent script for osx
-updater.platformDependentUpdater.macOSRunToolPath=/bin/bash
-
-# Minimum number of blocks which should be pushed into blockchain, before important update will start
-updater.importantUpdate.minBlocksWaiting=10
-
-# Maximum number of blocks which should be pushed into blockchain, before important update will start
-updater.importantUpdate.maxBlocksWaiting=20
\ No newline at end of file
diff --git a/apl-updater/src/main/resources/debug-certs/1_1.crt b/apl-updater/src/main/resources/debug-certs/1_1.crt
index 6a3edcd92d..5e290550f7 100644
--- a/apl-updater/src/main/resources/debug-certs/1_1.crt
+++ b/apl-updater/src/main/resources/debug-certs/1_1.crt
@@ -1,37 +1,33 @@
-----BEGIN CERTIFICATE-----
-MIIGdjCCBF6gAwIBAgICEBgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MDQwMzE0MzI1NVoX
-DTIwMDQxNzE0MzI1NVowgZsxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ4w
-DAYDVQQHDAVQb2RpbDEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDzANBgNVBAsMBkRl
-dk9wczEbMBkGA1UEAwwSd3d3LmZpcnN0YnJpZGdlLmlvMSkwJwYJKoZIhvcNAQkB
-FhpkZW5pcy5kZW11dEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBANPHEHKhHhTaWM0QpK5Gabkg5c25JfCCYQYAGSd5vc6i8+7/
-WAYhg4nwar02GCX43PlQel331r+HKey3Tq0VXFHOYAUv8LSe3IRbEzD8lsPs1qfx
-5/MEGgecfXt7jAWCZttpYkJ0ziyGn+qh68mKkEtQe6TsFyS5fqyhpoLCPG9ocwdv
-1GzVvhT/F5AB0idv5ADk0q2JU3jZ1Y9b9Izncf6KJrOcF/YfkFuqkOjjzK+jg0dI
-kvClrQDv6gNtIb75RYs2OUmBazGxay2nttGPTzxYvwyump+54JYaS1UGlypJ9cdb
-IySZI8n4Wu+mBP0+imsUFT4Q16XVZZNZ8FsB6xLy/PBBpZkPlPZ/j/bKmlpSO2Hf
-xCoLuXHTzTrOlEbE05iXdKqtV0M0CTMVRnkLMelrEWTTQ58RqtVBatsIsuR86CjN
-8EAP+4CTwP+S0IQtk2fDOaJVN2aQu+00kuDs1iSgrc7kNHrlNhVPH5v8BZWcKjNZ
-gOi3mIWexHaL+T4fu1RPGUDAWTQrMTCrYIay/mcYXxFa/NvilD3luWCjDmsMxTIk
-gL07v2OFbjJSOCHnWJt/L1SdAo2dS/yl666rAfDaR88AaVnGtGdw1ufH8jfIjElF
-ABXMmvrP0806ojg3lTbh3t9AzqiUvM8xbJx6VZUn/H/PmqumcIT6ICddRSgNAgMB
-AAGjgdEwgc4wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4
-QgENBCgWJkZpcnN0YnJpZGdlIE9wZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0G
-A1UdDgQWBBSiaFbE5vDkmOUtVNFuKX2R+ixPlDAfBgNVHSMEGDAWgBRLFcdSx+KQ
-e8U5aqVsyriIsvzJLTAOBgNVHQ8BAf8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUH
-AwIGCCsGAQUFBwMEBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAgEAX7T3DJ3b
-ACK4QTjDyRNO28xlLTTTSzezFeIKeY8HN1gxL7hoXq5DctKGEx4GMr98bKFFAiwo
-ZxMe8OmSxbfundt0Hjo4LWEEleSxVPYafVGPWA0Q6tMRjLnm2ZEeiy8s0i79TlCK
-HieoR1yT3X1tShCTzCyH6Gh/4aYr+i2LZ6+BmBdipcqOQSN/kMhxMQ5bLOdJfu5S
-ZRAULupTl+38fkvbQZPzynLcFIyLLXcEGuy/kr0DG8gTBLQ/GcWMvFf0ogfQrt7i
-839kvPadBzZzPLehSXv657pvhXM4bJE9zwOtIgr0tWZnb6ve7/9QnsZA5H0k7Xa4
-MxK4IqTkbhnK7AUdazMKs9QXJy7VyX41p0jag5VEr5g3ftyEZBUgJKNB1H0IYrVp
-loxBVnQp0bROjaTlA1IXZBaWTGEJArfNGbqKBQwoHiMfC0wyoryjxiMbbQiBLs/d
-ItLtn1ntu3WTIlcGXKlqmUbUwfw2fKZTupFFFbgpASnMurQmqKoHY/vD2lRCE9eI
-tvi4jXkR3P1QY7l848bz3Jm1FvHAk+TCCy5Prc1qz9uYBeYZQw1OA0CyZxH/2JTC
-dVio4KTVrbhwPvV1K4JdLwFxsMrUlkpGZr+BE9zsJaNkdnERj6/bDQhZ/KlHzj+p
-WAN1ZhzLqbzkvvHs64CQUvbuVY7Ip2TF2S0=
+MIIFqDCCA5ACAhABMA0GCSqGSIb3DQEBCwUAMIGmMQswCQYDVQQGEwJVQTENMAsG
+A1UECAwES3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwd
+QXBvbGxvIEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxHDAaBgNVBAMME0Fwb2xsbyBJ
+bnRlcm1lZGlhdGUxJzAlBgkqhkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRn
+ZS5pbzAeFw0yMjA0MjcwNDMyMzFaFw0yMzA1MDcwNDMyMzFaMIGLMQswCQYDVQQG
+EwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UEBwwES3lpdjEZMBcGA1UECgwQRmly
+c3QgQnJpZGdlIExMQzEZMBcGA1UEAwwQQW5kcmlpIEJvaWFyc2t5aTEoMCYGCSqG
+SIb3DQEJARYZYW5kcmV3LmJveWFyc2tpQGdtYWlsLmNvbTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAL82LxJnAmouFx/wxwdKqvYWcPErVvFvlz9TRdaB
+14yVffVIgiWVuFyxFGQdaXYioyUfjhyK//5V+HJShFAlxNYaW+ChUCvMfZj9gE8p
+Cg37pembRshK0ljgTY+UrjKySdyqqAoGa3+ho6ve42UskbL2UTF/3GrB8ji6YOuC
+mbYv2ewNZ9YGHtQDTh8l01BGlVazBsIlWZQwKXxDTgxBHjmK4YDey9eCvVYVkoAJ
+QaCw/c0C7kRtx3/eL0waoBq49zN2Pn5BTP5FjsAT6gz65owqB3Cx+TX/l0ki2ndB
+r6lP+sDhMHHA4vACLp5aOl2Ls2kVAkTVPwX2skwXNeIU3c2duT3LryrRseiRgh/m
+ZXfvjqAd5u4ZeAdqUULO/64wSCyCzo69QrfZ/hesGj39wAYZEMK05HvdUzMJwCXk
+21TBfJupYU3uiBwLsVeBwLyKw2TDt3ruPL9NmwLYsXo+2J/PsLMbdv58bI333UPJ
+dmx3lpVj43n0K5JGdzNe8YWo4Rp0vU40Cgtc8O2/KmCYRWxVM4V5wfuCOWD3vyTV
+YXjMgcnw/jbL7JZqHnHMxK07KUA0tF+LacXLsNDpEYI9km+LJ9aqQakDMDHOYc6K
+ImbgI1VEN7dqMLWJ002RiV0B3zz7D50gzTmsPkJmOUmPsUDN28lGUu84d2M0S8qH
+B0OvAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAHFi6Q+iRhv0HWuBWzNAbt3RthPY
+63UPLCEL2l6fac6a18rTQjG3CKxVr/1+I0CY4PoT0KlsKTSWrYc11iq/T/r3wpti
+9xlduQhx/1nUObUKuQeoyMKPk4AqzL/ePvdGEFbEaJB0CxgXDyFWbQMpo0y0RHxU
+MK8Ielf69W2uydMbw0Ap1fNVbWN28+b8vRdWSRqOXW6spe5iOsu4CDc5Ok4R+uJu
+hV3XBfNfMyJpJJ6lW6CpK8d3uWngY0yRpwXvoGyQIklwaQqhbyoWnBWG8SnKUHMV
+njySmDhHcaFJ2LaRZJI81kxATacgBkcqEn0TwOhX1gAjLcOV1tVebprqOsuOw7Tu
+WJ4Y1ci/Wvh0k56bUjAtj3fUb4N/TKrmw/6dkqGLZ6QpMUUTEP1ff1It9xq480tr
+0uPNNwe+RX27SCELgBykWo1ihQ0r16Hg8fWdIeZFUPVMHq6FJ2xWZrgpaaqQrzR/
+42VowSrDVTscQl6Y5eQOMTP3LIWB1WxBTTaSV+WlhDov1T6O2bCNcGYAWtEnNXYa
+emgzJZIjXzqhHFIJzHPQkBOZNnQZsB1DH1b5tyl+iKy17dE7+0jrJmRqPZAolJY7
+1pKCKDPfJnt3zG59305OEFE6/EXqX39yuuFwQJ+HIFWeDUdwcfR3n6DJcExy5fQV
+Y0vfYetJmqtztHVB
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/debug-certs/1_1.key b/apl-updater/src/main/resources/debug-certs/1_1.key
deleted file mode 100644
index 3674d7c7be..0000000000
--- a/apl-updater/src/main/resources/debug-certs/1_1.key
+++ /dev/null
@@ -1,54 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: AES-256-CBC,6D4B14D4185FC328788E7C78F3D29047
-
-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
------END RSA PRIVATE KEY-----
diff --git a/apl-updater/src/main/resources/debug-certs/2_1.crt b/apl-updater/src/main/resources/debug-certs/2_1.crt
index 6a3edcd92d..5e290550f7 100644
--- a/apl-updater/src/main/resources/debug-certs/2_1.crt
+++ b/apl-updater/src/main/resources/debug-certs/2_1.crt
@@ -1,37 +1,33 @@
-----BEGIN CERTIFICATE-----
-MIIGdjCCBF6gAwIBAgICEBgwDQYJKoZIhvcNAQELBQAwgYsxCzAJBgNVBAYTAlVB
-MQ0wCwYDVQQIDARLeWl2MRQwEgYDVQQKDAtGaXJzdEJyaWRnZTEPMA0GA1UECwwG
-RGV2T3BzMRswGQYDVQQDDBJ3d3cuZmlyc3RicmlkZ2UuaW8xKTAnBgkqhkiG9w0B
-CQEWGmRlbmlzLmRlbXV0QGZpcnN0YnJpZGdlLmlvMB4XDTE5MDQwMzE0MzI1NVoX
-DTIwMDQxNzE0MzI1NVowgZsxCzAJBgNVBAYTAlVBMQ0wCwYDVQQIDARLeWl2MQ4w
-DAYDVQQHDAVQb2RpbDEUMBIGA1UECgwLRmlyc3RCcmlkZ2UxDzANBgNVBAsMBkRl
-dk9wczEbMBkGA1UEAwwSd3d3LmZpcnN0YnJpZGdlLmlvMSkwJwYJKoZIhvcNAQkB
-FhpkZW5pcy5kZW11dEBmaXJzdGJyaWRnZS5pbzCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBANPHEHKhHhTaWM0QpK5Gabkg5c25JfCCYQYAGSd5vc6i8+7/
-WAYhg4nwar02GCX43PlQel331r+HKey3Tq0VXFHOYAUv8LSe3IRbEzD8lsPs1qfx
-5/MEGgecfXt7jAWCZttpYkJ0ziyGn+qh68mKkEtQe6TsFyS5fqyhpoLCPG9ocwdv
-1GzVvhT/F5AB0idv5ADk0q2JU3jZ1Y9b9Izncf6KJrOcF/YfkFuqkOjjzK+jg0dI
-kvClrQDv6gNtIb75RYs2OUmBazGxay2nttGPTzxYvwyump+54JYaS1UGlypJ9cdb
-IySZI8n4Wu+mBP0+imsUFT4Q16XVZZNZ8FsB6xLy/PBBpZkPlPZ/j/bKmlpSO2Hf
-xCoLuXHTzTrOlEbE05iXdKqtV0M0CTMVRnkLMelrEWTTQ58RqtVBatsIsuR86CjN
-8EAP+4CTwP+S0IQtk2fDOaJVN2aQu+00kuDs1iSgrc7kNHrlNhVPH5v8BZWcKjNZ
-gOi3mIWexHaL+T4fu1RPGUDAWTQrMTCrYIay/mcYXxFa/NvilD3luWCjDmsMxTIk
-gL07v2OFbjJSOCHnWJt/L1SdAo2dS/yl666rAfDaR88AaVnGtGdw1ufH8jfIjElF
-ABXMmvrP0806ojg3lTbh3t9AzqiUvM8xbJx6VZUn/H/PmqumcIT6ICddRSgNAgMB
-AAGjgdEwgc4wCQYDVR0TBAIwADARBglghkgBhvhCAQEEBAMCBaAwNQYJYIZIAYb4
-QgENBCgWJkZpcnN0YnJpZGdlIE9wZW5TU0wgQ2xpZW50IENlcnRpZmljYXRlMB0G
-A1UdDgQWBBSiaFbE5vDkmOUtVNFuKX2R+ixPlDAfBgNVHSMEGDAWgBRLFcdSx+KQ
-e8U5aqVsyriIsvzJLTAOBgNVHQ8BAf8EBAMCBeAwJwYDVR0lBCAwHgYIKwYBBQUH
-AwIGCCsGAQUFBwMEBggrBgEFBQcDAzANBgkqhkiG9w0BAQsFAAOCAgEAX7T3DJ3b
-ACK4QTjDyRNO28xlLTTTSzezFeIKeY8HN1gxL7hoXq5DctKGEx4GMr98bKFFAiwo
-ZxMe8OmSxbfundt0Hjo4LWEEleSxVPYafVGPWA0Q6tMRjLnm2ZEeiy8s0i79TlCK
-HieoR1yT3X1tShCTzCyH6Gh/4aYr+i2LZ6+BmBdipcqOQSN/kMhxMQ5bLOdJfu5S
-ZRAULupTl+38fkvbQZPzynLcFIyLLXcEGuy/kr0DG8gTBLQ/GcWMvFf0ogfQrt7i
-839kvPadBzZzPLehSXv657pvhXM4bJE9zwOtIgr0tWZnb6ve7/9QnsZA5H0k7Xa4
-MxK4IqTkbhnK7AUdazMKs9QXJy7VyX41p0jag5VEr5g3ftyEZBUgJKNB1H0IYrVp
-loxBVnQp0bROjaTlA1IXZBaWTGEJArfNGbqKBQwoHiMfC0wyoryjxiMbbQiBLs/d
-ItLtn1ntu3WTIlcGXKlqmUbUwfw2fKZTupFFFbgpASnMurQmqKoHY/vD2lRCE9eI
-tvi4jXkR3P1QY7l848bz3Jm1FvHAk+TCCy5Prc1qz9uYBeYZQw1OA0CyZxH/2JTC
-dVio4KTVrbhwPvV1K4JdLwFxsMrUlkpGZr+BE9zsJaNkdnERj6/bDQhZ/KlHzj+p
-WAN1ZhzLqbzkvvHs64CQUvbuVY7Ip2TF2S0=
+MIIFqDCCA5ACAhABMA0GCSqGSIb3DQEBCwUAMIGmMQswCQYDVQQGEwJVQTENMAsG
+A1UECAwES3lpdjEZMBcGA1UECgwQRmlyc3QgQnJpZGdlIGx0ZDEmMCQGA1UECwwd
+QXBvbGxvIEJsb2NrY2hhaW4gRGV2ZWxvcG1lbnQxHDAaBgNVBAMME0Fwb2xsbyBJ
+bnRlcm1lZGlhdGUxJzAlBgkqhkiG9w0BCQEWGHJvc3R5c2xhdkBmaXJzdGJyaWRn
+ZS5pbzAeFw0yMjA0MjcwNDMyMzFaFw0yMzA1MDcwNDMyMzFaMIGLMQswCQYDVQQG
+EwJVQTENMAsGA1UECAwES3lpdjENMAsGA1UEBwwES3lpdjEZMBcGA1UECgwQRmly
+c3QgQnJpZGdlIExMQzEZMBcGA1UEAwwQQW5kcmlpIEJvaWFyc2t5aTEoMCYGCSqG
+SIb3DQEJARYZYW5kcmV3LmJveWFyc2tpQGdtYWlsLmNvbTCCAiIwDQYJKoZIhvcN
+AQEBBQADggIPADCCAgoCggIBAL82LxJnAmouFx/wxwdKqvYWcPErVvFvlz9TRdaB
+14yVffVIgiWVuFyxFGQdaXYioyUfjhyK//5V+HJShFAlxNYaW+ChUCvMfZj9gE8p
+Cg37pembRshK0ljgTY+UrjKySdyqqAoGa3+ho6ve42UskbL2UTF/3GrB8ji6YOuC
+mbYv2ewNZ9YGHtQDTh8l01BGlVazBsIlWZQwKXxDTgxBHjmK4YDey9eCvVYVkoAJ
+QaCw/c0C7kRtx3/eL0waoBq49zN2Pn5BTP5FjsAT6gz65owqB3Cx+TX/l0ki2ndB
+r6lP+sDhMHHA4vACLp5aOl2Ls2kVAkTVPwX2skwXNeIU3c2duT3LryrRseiRgh/m
+ZXfvjqAd5u4ZeAdqUULO/64wSCyCzo69QrfZ/hesGj39wAYZEMK05HvdUzMJwCXk
+21TBfJupYU3uiBwLsVeBwLyKw2TDt3ruPL9NmwLYsXo+2J/PsLMbdv58bI333UPJ
+dmx3lpVj43n0K5JGdzNe8YWo4Rp0vU40Cgtc8O2/KmCYRWxVM4V5wfuCOWD3vyTV
+YXjMgcnw/jbL7JZqHnHMxK07KUA0tF+LacXLsNDpEYI9km+LJ9aqQakDMDHOYc6K
+ImbgI1VEN7dqMLWJ002RiV0B3zz7D50gzTmsPkJmOUmPsUDN28lGUu84d2M0S8qH
+B0OvAgMBAAEwDQYJKoZIhvcNAQELBQADggIBAHFi6Q+iRhv0HWuBWzNAbt3RthPY
+63UPLCEL2l6fac6a18rTQjG3CKxVr/1+I0CY4PoT0KlsKTSWrYc11iq/T/r3wpti
+9xlduQhx/1nUObUKuQeoyMKPk4AqzL/ePvdGEFbEaJB0CxgXDyFWbQMpo0y0RHxU
+MK8Ielf69W2uydMbw0Ap1fNVbWN28+b8vRdWSRqOXW6spe5iOsu4CDc5Ok4R+uJu
+hV3XBfNfMyJpJJ6lW6CpK8d3uWngY0yRpwXvoGyQIklwaQqhbyoWnBWG8SnKUHMV
+njySmDhHcaFJ2LaRZJI81kxATacgBkcqEn0TwOhX1gAjLcOV1tVebprqOsuOw7Tu
+WJ4Y1ci/Wvh0k56bUjAtj3fUb4N/TKrmw/6dkqGLZ6QpMUUTEP1ff1It9xq480tr
+0uPNNwe+RX27SCELgBykWo1ihQ0r16Hg8fWdIeZFUPVMHq6FJ2xWZrgpaaqQrzR/
+42VowSrDVTscQl6Y5eQOMTP3LIWB1WxBTTaSV+WlhDov1T6O2bCNcGYAWtEnNXYa
+emgzJZIjXzqhHFIJzHPQkBOZNnQZsB1DH1b5tyl+iKy17dE7+0jrJmRqPZAolJY7
+1pKCKDPfJnt3zG59305OEFE6/EXqX39yuuFwQJ+HIFWeDUdwcfR3n6DJcExy5fQV
+Y0vfYetJmqtztHVB
-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/debug-certs/2_1.key b/apl-updater/src/main/resources/debug-certs/2_1.key
deleted file mode 100644
index 3674d7c7be..0000000000
--- a/apl-updater/src/main/resources/debug-certs/2_1.key
+++ /dev/null
@@ -1,54 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-Proc-Type: 4,ENCRYPTED
-DEK-Info: AES-256-CBC,6D4B14D4185FC328788E7C78F3D29047
-
-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
------END RSA PRIVATE KEY-----
diff --git a/apl-updater/src/main/resources/debug-certs/intermediate.crt b/apl-updater/src/main/resources/debug-certs/intermediate.crt
new file mode 100644
index 0000000000..0fee91609d
--- /dev/null
+++ b/apl-updater/src/main/resources/debug-certs/intermediate.crt
@@ -0,0 +1,36 @@
+-----BEGIN CERTIFICATE-----
+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
+NSNmMr0H
+-----END CERTIFICATE-----
diff --git a/apl-updater/src/main/resources/conf/updater.properties b/apl-updater/src/main/resources/updater.properties
similarity index 86%
rename from apl-updater/src/main/resources/conf/updater.properties
rename to apl-updater/src/main/resources/updater.properties
index b37bc06d11..a1f50e29dc 100644
--- a/apl-updater/src/main/resources/conf/updater.properties
+++ b/apl-updater/src/main/resources/updater.properties
@@ -1,5 +1,5 @@
#
-# Copyright Ā© 2018-2019 Apollo Foundation
+# Copyright Ā© 2018-2022 Apollo Foundation
#
#### UPDATER CONFIG####
@@ -20,7 +20,7 @@ updater.platformDependentUpdater.linuxRunToolPath=/bin/bash
updater.platformDependentUpdater.macOSRunToolPath=/bin/bash
# Minimum number of blocks which should be pushed into blockchain, before important update will start
-updater.importantUpdate.minBlocksWaiting=10
+updater.importantUpdate.minBlocksWaiting=60
# Maximum number of blocks which should be pushed into blockchain, before important update will start
-updater.importantUpdate.maxBlocksWaiting=20
\ No newline at end of file
+updater.importantUpdate.maxBlocksWaiting=120
\ No newline at end of file
diff --git a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/AuthorityCheckerImplTest.java b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/AuthorityCheckerImplTest.java
index b8f8919746..eaf68379a1 100644
--- a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/AuthorityCheckerImplTest.java
+++ b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/AuthorityCheckerImplTest.java
@@ -24,30 +24,30 @@
public class AuthorityCheckerImplTest {
private static Certificate loadRootCert() throws CertificateException, IOException, URISyntaxException {
- String testRootCAPath = "certs/rootCA.crt";
+ String testRootCAPath = "test-certs/rootCA.crt";
Certificate certificate = UpdaterUtil.readCertificate(testRootCAPath);
return certificate;
}
@Test
public void testVerifyCertificates() throws Exception {
- String testRootCAPath = "certs/rootCA.crt";
+ String testRootCAPath = "test-certs/rootCA.crt";
Certificate certificate = UpdaterUtil.readCertificate(testRootCAPath);
AuthorityChecker correctAuthorityChecker = new AuthorityCheckerImpl(certificate, ".crt", "intermediate.crt",
"1_", "2_");
- boolean verified = correctAuthorityChecker.verifyCertificates("certs");
+ boolean verified = correctAuthorityChecker.verifyCertificates("test-certs");
assertTrue(verified);
}
@Test
public void testNotVerifiedCertificatesWhenIncorrectRootCertificate() throws Exception {
- String fakeRootCACertificate = "certs/1_1.crt";
+ String fakeRootCACertificate = "test-certs/1_1.crt";
Certificate certificate = UpdaterUtil.readCertificate(fakeRootCACertificate);
AuthorityChecker incorrectAuthorityChecker = new AuthorityCheckerImpl(certificate, ".crt", "intermediate.crt", "1_", "2_");
;
- boolean isVerified = incorrectAuthorityChecker.verifyCertificates("certs");
+ boolean isVerified = incorrectAuthorityChecker.verifyCertificates("test-certs");
assertFalse(isVerified);
}
@@ -56,7 +56,7 @@ public void testNotVerifiedCertificatesWhenIncorrectRootCertificate() throws Exc
public void testNotVerifiedCertificatesWhenIncorrectPathIntermediateCertificate() {
AuthorityChecker incorrectAuthorityChecker = new AuthorityCheckerImpl("rootCA.crt", ".crt", "intermediat.crt", "1_", "2_");
//
- assertThrows(RuntimeException.class, () -> incorrectAuthorityChecker.verifyCertificates("certs"));
+ assertThrows(RuntimeException.class, () -> incorrectAuthorityChecker.verifyCertificates("test-certs"));
}
@Test
@@ -64,8 +64,8 @@ public void testVerifyJar() throws Exception {
Path jarFilePath = Files.createTempFile("apl-test", ".jar");
try {
OutputStream jarOutputStream = Files.newOutputStream(jarFilePath);
- Certificate certificate = UpdaterUtil.readCertificate(("certs/1_2.crt"));
- PrivateKey key = RSAUtil.getPrivateKey("certs/1_2.key");
+ Certificate certificate = UpdaterUtil.readCertificate(("test-certs/1_2.crt"));
+ PrivateKey key = RSAUtil.getPrivateKey("test-certs/1_2.key");
JarGenerator generator = new JarGenerator(jarOutputStream, certificate, key);
generator.generate();
generator.close();
@@ -81,7 +81,7 @@ public void testVerifyNotSignedJar() throws Exception {
Path jarFilePath = Files.createTempFile("apl-test", ".jar");
try {
OutputStream jarOutputStream = Files.newOutputStream(jarFilePath);
- Certificate certificate = UpdaterUtil.readCertificate("certs/1_2.crt");
+ Certificate certificate = UpdaterUtil.readCertificate("test-certs/1_2.crt");
JarGenerator generator = new JarGenerator(jarOutputStream);
generator.generate();
generator.close();
diff --git a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/RSAUtilTest.java b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/RSAUtilTest.java
index fd06a13954..ea3e343837 100644
--- a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/RSAUtilTest.java
+++ b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/RSAUtilTest.java
@@ -35,8 +35,8 @@ public class RSAUtilTest {
@Test
public void testEncryptAndDecrypt() throws Exception {
- PublicKey pubKey = getPublicKeyFromCertificate("certs/1_1.crt");
- PrivateKey privateKey = getPrivateKey("certs/1_1.key");
+ PublicKey pubKey = getPublicKeyFromCertificate("test-certs/1_1.crt");
+ PrivateKey privateKey = getPrivateKey("test-certs/1_1.key");
// encrypt the message
String expectedMessage = "This is a secret message";
@@ -53,11 +53,11 @@ public void testEncryptAndDecrypt() throws Exception {
@Test
public void doubleEncryptAndDecrypt() throws Exception {
- PublicKey pubKey1 = getPublicKeyFromCertificate("certs/1_2.crt");
- PrivateKey privateKey1 = getPrivateKey("certs/1_2.key");
+ PublicKey pubKey1 = getPublicKeyFromCertificate("test-certs/1_2.crt");
+ PrivateKey privateKey1 = getPrivateKey("test-certs/1_2.key");
- PublicKey pubKey2 = getPublicKeyFromCertificate("certs/2_2.crt");
- PrivateKey privateKey2 = getPrivateKey("certs/2_2.key");
+ PublicKey pubKey2 = getPublicKeyFromCertificate("test-certs/2_2.crt");
+ PrivateKey privateKey2 = getPrivateKey("test-certs/2_2.key");
String expectedMessage = "This is a secret message!";
@@ -73,11 +73,11 @@ public void doubleEncryptAndDecrypt() throws Exception {
@Test
public void testDecryptUrl() throws Exception {
- PublicKey pubKey1 = getPublicKeyFromCertificate("certs/1_2.crt");
- PrivateKey privateKey1 = getPrivateKey("certs/1_2.key");
+ PublicKey pubKey1 = getPublicKeyFromCertificate("test-certs/1_2.crt");
+ PrivateKey privateKey1 = getPrivateKey("test-certs/1_2.key");
- PublicKey pubKey2 = getPublicKeyFromCertificate("certs/2_2.crt");
- PrivateKey privateKey2 = getPrivateKey("certs/2_2.key");
+ PublicKey pubKey2 = getPublicKeyFromCertificate("test-certs/2_2.crt");
+ PrivateKey privateKey2 = getPrivateKey("test-certs/2_2.key");
String expectedMessage = "http://apollocurrency/ApolloWallet-1.0.8.jar";
DoubleByteArrayTuple doubleEncryptedBytes = RSAUtil.doubleEncrypt(privateKey1, privateKey2, expectedMessage.getBytes());
@@ -93,16 +93,16 @@ public void testDecryptUrl() throws Exception {
@Test
void testDecryptUrlEx() throws Exception {
- PublicKey pubKey1 = getPublicKeyFromCertificate("certs/1_2.crt");
- PrivateKey privateKey1 = getPrivateKey("certs/1_2.key");
+ PublicKey pubKey1 = getPublicKeyFromCertificate("test-certs/1_2.crt");
+ PrivateKey privateKey1 = getPrivateKey("test-certs/1_2.key");
- PublicKey pubKey2 = getPublicKeyFromCertificate("certs/2_2.crt");
- PrivateKey privateKey2 = getPrivateKey("certs/2_2.key");
+ PublicKey pubKey2 = getPublicKeyFromCertificate("test-certs/2_2.crt");
+ PrivateKey privateKey2 = getPrivateKey("test-certs/2_2.key");
Set pairs = new HashSet<>();
String expectedMessage = "http://apollocurrency/ApolloWallet-1.0.8.jar";
DoubleByteArrayTuple doubleEncryptedBytes = RSAUtil.doubleEncrypt(privateKey1, privateKey2, expectedMessage.getBytes());
- Certificate c1 = UpdaterUtil.readCertificate("certs/1_2.crt");
- Certificate c2 = UpdaterUtil.readCertificate("certs/2_2.crt");
+ Certificate c1 = UpdaterUtil.readCertificate("test-certs/1_2.crt");
+ Certificate c2 = UpdaterUtil.readCertificate("test-certs/2_2.crt");
pairs.add(new CertificatePair(c1, c2));
SimpleUrlExtractor extractor = new SimpleUrlExtractor(new RSADoubleDecryptor(), pairs);
byte[] bytes = UpdaterUtil.concatArrays(doubleEncryptedBytes.getFirst(), doubleEncryptedBytes.getSecond());
diff --git a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterCoreTest.java b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterCoreTest.java
index 5a6ee4f950..f392e6f0a3 100644
--- a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterCoreTest.java
+++ b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterCoreTest.java
@@ -5,7 +5,6 @@
package com.apollocurrency.aplwallet.apl.updater;
import com.apollocurrency.aplwallet.apl.core.chainid.BlockchainConfig;
-import com.apollocurrency.aplwallet.apl.util.db.TransactionalDataSource;
import com.apollocurrency.aplwallet.apl.core.model.Transaction;
import com.apollocurrency.aplwallet.apl.core.service.state.account.AccountService;
import com.apollocurrency.aplwallet.apl.core.transaction.TransactionType;
@@ -18,19 +17,17 @@
import com.apollocurrency.aplwallet.apl.udpater.intfce.UpdateInfo;
import com.apollocurrency.aplwallet.apl.udpater.intfce.UpdaterCore;
import com.apollocurrency.aplwallet.apl.udpater.intfce.UpdaterMediator;
+import com.apollocurrency.aplwallet.apl.updater.core.Updater;
import com.apollocurrency.aplwallet.apl.updater.core.UpdaterCoreImpl;
import com.apollocurrency.aplwallet.apl.updater.core.UpdaterFactory;
import com.apollocurrency.aplwallet.apl.updater.export.event.UpdateEventData;
-import com.apollocurrency.aplwallet.apl.updater.pdu.PlatformDependentUpdater;
import com.apollocurrency.aplwallet.apl.updater.service.UpdaterService;
import com.apollocurrency.aplwallet.apl.util.DoubleByteArrayTuple;
import com.apollocurrency.aplwallet.apl.util.Version;
import com.apollocurrency.aplwallet.apl.util.env.Arch;
import com.apollocurrency.aplwallet.apl.util.env.OS;
-import com.apollocurrency.aplwallet.apl.util.injectable.DbProperties;
-import com.apollocurrency.aplwallet.apl.util.injectable.PropertiesHolder;
+import jakarta.enterprise.util.AnnotationLiteral;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
@@ -54,21 +51,14 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-@Disabled
@ExtendWith(MockitoExtension.class)
public class UpdaterCoreTest {
private final String decryptedUrl = "http://apollocurrency/ApolloWallet.jar";
- @Mock
- UpdaterMediator updaterMediator;
private UpdateAttachment attachment;
@Mock
- private PropertiesHolder propertiesHolder;
- @Mock
private UpdaterMediator updaterMediatorInstance;
@Mock
- private PlatformDependentUpdater fakePlatformDependentUpdaterInstance;
- @Mock
private UpdaterService updaterService;
@Mock
private UpdaterFactory updaterFactory;
@@ -83,7 +73,6 @@ public class UpdaterCoreTest {
@BeforeEach
public void setUp() throws Exception {
- doReturn(new TransactionalDataSource(DbProperties.builder().build(), propertiesHolder)).when(updaterMediator).getDataSource();
attachment = UpdateAttachment.getAttachment(
OS.current(),
Arch.current(),
@@ -91,19 +80,29 @@ public void setUp() throws Exception {
new Version("1.0.8"),
new byte[0],
(byte) 0);
-
}
// UpdaterCoreImpl Init tests
@Test
public void testInitNotUpdatedTransaction() throws Exception {
+ // prepare
CriticalUpdateTransactiionType type = new CriticalUpdateTransactiionType(blockchainConfig, accountService);
SimpleTransaction mockTransaction = new SimpleTransaction(0, type);
mockTransaction.setAttachment(attachment);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), false);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.isUpdated()).thenReturn(false);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
when(updaterService.getLast()).thenReturn(updateTransaction);
when(transactionVerifier.process(mockTransaction)).thenReturn(new UpdateData(attachment, mockTransaction.getId(), decryptedUrl));
+ Event select = mock(Event.class);
+ when(startUpdateEvent.select(any(AnnotationLiteral.class))).thenReturn(select);
+ UpdateInfo.UpdateState updateState = UpdateInfo.UpdateState.NONE;
+ Updater updater = mock(Updater.class);
+ when(updater.processUpdate()).thenReturn(updateState);
+ when(updaterFactory.getUpdater(any(UpdateData.class))).thenReturn(updater);
+
+ // create
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
updaterFactory, transactionVerifier, updateInfo, startUpdateEvent);
@@ -122,9 +121,11 @@ public void testInitNotUpdatedMinorTransaction() throws Exception {
MinorUpdateTransactionType type = new MinorUpdateTransactionType(blockchainConfig, accountService);
SimpleTransaction mockTransaction = new SimpleTransaction(0, type);
mockTransaction.setAttachment(attachment);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), false);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.isUpdated()).thenReturn(false);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
when(updaterService.getLast()).thenReturn(updateTransaction);
- when(transactionVerifier.process(mockTransaction)).thenReturn(new UpdateData(attachment, mockTransaction.getId(), decryptedUrl));
+ when(transactionVerifier.process(mockTransaction)).thenReturn(null);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
updaterFactory, transactionVerifier, updateInfo, startUpdateEvent);
@@ -153,10 +154,12 @@ public void testInitNullUpdateTransaction() throws Exception {
@Test
- public void testInitNotUpdatedNullUpdateData() throws Exception {
+ public void testInitNotUpdatedNullUpdateData() {
MinorUpdateTransactionType type = new MinorUpdateTransactionType(blockchainConfig, accountService);
Transaction mockTransaction = new SimpleTransaction(1L, type);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), false);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.isUpdated()).thenReturn(false);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
when(updaterService.getLast()).thenReturn(updateTransaction);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
@@ -172,11 +175,13 @@ public void testInitNotUpdatedNullUpdateData() throws Exception {
}
@Test
- public void testInitUpdatedCriticalUpdateGreaterUpdateVersion() throws Exception {
- MinorUpdateTransactionType type = new MinorUpdateTransactionType(blockchainConfig, accountService);
+ public void testInitUpdatedCriticalUpdateGreaterUpdateVersion() {
+ CriticalUpdateTransactiionType type = new CriticalUpdateTransactiionType(blockchainConfig, accountService);
SimpleTransaction mockTransaction = new SimpleTransaction(1L, type);
mockTransaction.setAttachment(attachment);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), true);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.isUpdated()).thenReturn(true);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
when(updaterService.getLast()).thenReturn(updateTransaction);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
@@ -194,17 +199,17 @@ public void testInitUpdatedCriticalUpdateGreaterUpdateVersion() throws Exception
}
@Test
- public void testInitUpdatedNonCriticalUpdateGreaterUpdateVersion() throws Exception {
+ public void testInitUpdatedNonCriticalUpdateGreaterUpdateVersion() {
MinorUpdateTransactionType type = new MinorUpdateTransactionType(blockchainConfig, accountService);
SimpleTransaction mockTransaction = new SimpleTransaction(1L, type);
mockTransaction.setAttachment(attachment);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), true);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
when(updaterService.getLast()).thenReturn(updateTransaction);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
updaterFactory, transactionVerifier, updateInfo, startUpdateEvent);
UpdaterCore spy = spy(updaterCore);
- when(updaterMediatorInstance.getWalletVersion()).thenReturn(new Version("1.0.7"));
spy.init();
@@ -213,17 +218,17 @@ public void testInitUpdatedNonCriticalUpdateGreaterUpdateVersion() throws Except
}
@Test
- public void testInitUpdatedAllUpdatesLesserOrEqualUpdateVersion() throws Exception {
+ public void testInitUpdatedAllUpdatesLesserOrEqualUpdateVersion() {
ImportantUpdateTransactionType type = new ImportantUpdateTransactionType(blockchainConfig, accountService);
SimpleTransaction mockTransaction = new SimpleTransaction(1L, type);
mockTransaction.setAttachment(attachment);
- UpdateTransaction updateTransaction = new UpdateTransaction(mockTransaction.getId(), true);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
when(updaterService.getLast()).thenReturn(updateTransaction);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
updaterFactory, transactionVerifier, updateInfo, startUpdateEvent);
UpdaterCore spy = spy(updaterCore);
- when(updaterMediatorInstance.getWalletVersion()).thenReturn(attachment.getAppVersion());
spy.init();
@@ -235,14 +240,30 @@ public void testInitUpdatedAllUpdatesLesserOrEqualUpdateVersion() throws Excepti
// UpdaterCoreImpl startAvailableUpdate
@Test
public void testStartMinorUpdate() throws InterruptedException {
+ attachment = UpdateAttachment.getAttachment(
+ OS.current(),
+ Arch.current(),
+ new DoubleByteArrayTuple(new byte[0], new byte[0]),
+ new Version("1.0.8"),
+ new byte[0],
+ (byte) 2);
+
MinorUpdateTransactionType type = new MinorUpdateTransactionType(blockchainConfig, accountService);
- SimpleTransaction mockTransaction = new SimpleTransaction(3L, type);
- mockTransaction.setAttachment(attachment);
+ Transaction mockTransaction = new SimpleTransaction(3L, type);
+ ((SimpleTransaction)mockTransaction).setAttachment(attachment);
+ UpdateTransaction updateTransaction = mock(UpdateTransaction.class);
+ when(updateTransaction.isUpdated()).thenReturn(false);
+ when(updateTransaction.getTransaction()).thenReturn(mockTransaction);
+ when(updaterService.getLast()).thenReturn(updateTransaction);
+
+ Event select = mock(Event.class);
+ when(startUpdateEvent.select(any(AnnotationLiteral.class))).thenReturn(select);
+ when(updaterMediatorInstance.getBlockchainHeight()).thenReturn(300).thenReturn(300);
+
UpdateData updateData = new UpdateData(attachment, mockTransaction.getId(), decryptedUrl);
UpdateInfo updateInfo = new UpdateInfo();
UpdaterCore updaterCore = new UpdaterCoreImpl(updaterService, updaterMediatorInstance,
transactionVerifier, updateInfo, startUpdateEvent);
- doReturn(new UpdateTransaction(mockTransaction.getId(), false)).when(updaterService).getLast();
doReturn(updateData).when(transactionVerifier).process(mockTransaction);
UpdaterCore spy = spy(updaterCore);
diff --git a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtilTest.java b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtilTest.java
index 64c08037ec..0f00bb40d6 100644
--- a/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtilTest.java
+++ b/apl-updater/src/test/java/com/apollocurrency/aplwallet/apl/updater/UpdaterUtilTest.java
@@ -4,163 +4,142 @@
package com.apollocurrency.aplwallet.apl.updater;
-import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
-import org.mockito.Mock;
-import org.mockito.Mockito;
import org.slf4j.Logger;
import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.util.Arrays;
-import java.util.HashSet;
+import java.security.cert.X509Certificate;
import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
import static org.slf4j.LoggerFactory.getLogger;
-//import org.powermock.api.mockito.PowerMockito;
-
-//TODO: Rewrite using mockito
-@Disabled
+/**
+ * in case RUN TIME ERROR (e.g. in IDE)
+ * add VM parameter below to this test
+ * --add-opens=java.base/sun.security.x509=ALL-UNNAMED
+ */
public class UpdaterUtilTest {
private static final Logger log = getLogger(UpdaterUtilTest.class);
- private final static String CERTIFICATE_MOCK_PREFIX = "CERTIFICATE_MOCK_";
-
- @Mock
- private CertificateFactory certificateFactoryMock;
-
- /**
- * Create certificate mock for each filename.
- * Used to mock dependencies of UpdaterUtil.readCertificates(Set certificateFilesPaths) method
- *
- * @param certificateFactoryMock
- * @param files
- * @throws IOException
- * @throws CertificateException
- */
- private static void createCertificateMocksForFiles(CertificateFactory certificateFactoryMock, String[] files) throws IOException, CertificateException {
- for (String filename : files) {
- InputStream inputStreamMock = Mockito.mock(InputStream.class);
- Certificate certificateMock = Mockito.mock(Certificate.class);
-
-// PowerMockito.when(Files.newInputStream(Paths.get(filename))).thenReturn(inputStreamMock);
-
- Mockito.when(certificateFactoryMock.generateCertificate(inputStreamMock)).thenReturn(certificateMock);
- Mockito.when(certificateMock.toString()).thenReturn(CERTIFICATE_MOCK_PREFIX + filename);
- }
- }
-
- /**
- * convert String[] to Stream
- *
- * @param filenames
- * @return
- */
- private static Stream createPathStream(String[] filenames) {
- return Arrays.stream(filenames).map(filename -> Paths.get(filename));
- }
-
- /**
- * Simple iterate through result not to make filename to mock-cert mapping for better readability
- *
- * @param pairs
- * @param first
- * @param second
- * @return
- */
- private static boolean containsPair(Set pairs, String first, String second) {
- for (CertificatePair pair : pairs) {
- if (pair.getFirstCertificate().toString().equals(CERTIFICATE_MOCK_PREFIX + first) &&
- pair.getSecondCertificate().toString().equals(CERTIFICATE_MOCK_PREFIX + second)) {
- return true;
- }
- }
- return false;
+ @AfterEach
+ void tearDown() {
+ UpdaterUtil.certificates.clear();
+ UpdaterUtil.certificatePairs.clear();
}
- /**
- * Test UpdaterUtil.buildCertificatePairs(String certificateDirectory) method
- *
- * @throws Exception
- */
@Test
public void testBuildCertificatePairs() throws Exception {
- String directory = "test-dir";
- String[] files = new String[]{"1_1.crt", "1_2.crt", "1_3.crt", "2_1.crt", "2_2.crt"};
-
- Path directoryPath = Paths.get(directory);
-
-// PowerMockito.spy(UpdaterUtil.class);
-// PowerMockito.doReturn(directoryPath).when(UpdaterUtil.class, "loadResourcePath", directory) ;
-// PowerMockito.mockStatic(Files.class);
-// PowerMockito.when(Files.walk(directoryPath, 1)).thenReturn(createPathStream(files), createPathStream(files));
-// PowerMockito.mockStatic(CertificateFactory.class);
-// PowerMockito.when(CertificateFactory.getInstance("X.509")).thenReturn(certificateFactoryMock);
-
- // create certificate mock for each filename
- createCertificateMocksForFiles(certificateFactoryMock, files);
-
+ UpdaterUtil.init(false);
// Call tested method
- Set result = UpdaterUtil.buildCertificatePairs(directory, "1_", "2_", ".crt");
+ Set result = UpdaterUtil.buildCertificatePairs("any-dir",
+ "1_", "2_", ".crt");
assertNotNull(result);
for (CertificatePair pair : result) {
log.debug("pair: [{}, {}]", pair.getFirstCertificate().toString(), pair.getSecondCertificate().toString());
}
+ log.debug("set size: {}", result.size());
+ assertEquals(result.size(), 9);
+// assertHasPair(result, "YL", "Denis Demut");
+// assertHasPair(result, "YL", "Dzhyncharadze George");
+// assertHasPair(result, "YL", "iAlexander");
+// assertHasPair(result, "Rostyslav Golda", "Denis Demut");
+// assertHasPair(result, "Rostyslav Golda", "Dzhyncharadze George");
+// assertHasPair(result, "Rostyslav Golda", "iAlexander");
+// assertHasPair(result, "Maksim Khabenko", "Denis Demut");
+// assertHasPair(result, "Maksim Khabenko", "Dzhyncharadze George");
+// assertHasPair(result, "Maksim Khabenko", "iAlexander");
+ }
- assertEquals(result.size(), 6);
+ @Test
+ public void testBuildDebugCertificatePairs() throws Exception {
+ UpdaterUtil.init(true);
- assertTrue(containsPair(result, "2_1.crt", "1_1.crt"));
- assertTrue(containsPair(result, "2_1.crt", "1_2.crt"));
- assertTrue(containsPair(result, "2_1.crt", "1_3.crt"));
- assertTrue(containsPair(result, "2_2.crt", "1_1.crt"));
- assertTrue(containsPair(result, "2_2.crt", "1_2.crt"));
- assertTrue(containsPair(result, "2_2.crt", "1_3.crt"));
+ Set result = UpdaterUtil.buildCertificatePairs("any-dir",
+ "1_", "2_", ".crt");
+ assertNotNull(result);
+ assertEquals(result.size(), 1);
+ assertHasPair(result, "Andrii Boiarskyi", "Andrii Boiarskyi");
}
- /**
- * Test UpdaterUtil.readCertificates(Set certificateFilesPaths) method
- *
- * @throws CertificateException
- * @throws IOException
- */
- @Test
- public void testReadCertificates() throws Exception {
-
- String[] files = new String[]{"cert1", "cert2", "cert3"};
-// PowerMockito.mockStatic(Files.class);
-//
-// PowerMockito.mockStatic(CertificateFactory.class);
-// PowerMockito.when(CertificateFactory.getInstance("X.509")).thenReturn(certificateFactoryMock);
+ @Test
+ public void testReadMainCertificates() throws IOException {
- // create certificate mock for each filename
- createCertificateMocksForFiles(certificateFactoryMock, files);
+ // init certificates (from apl-updater/src/main/resources/certs)
+ UpdaterUtil.init(false);
- // Call tested method
- Set result = UpdaterUtil.readCertificates(createPathStream(files).collect(Collectors.toSet()));
+ // read certificates ignoring input parameters
+ Set result = UpdaterUtil.readCertificates("any-dir", "any-prefix", "any-suffix");
assertNotNull(result);
- assertEquals(result.size(), files.length);
+ assertEquals(6, result.size());
- HashSet filenames = new HashSet<>(Arrays.asList(files));
// Assert that for each filename a correspondent certificate was created
+ final Set names = Set.of("Denis Demut", "YL", "Rostyslav Golda",
+ "Dzhyncharadze George", "iAlexander", "Maksim Khabenko");
for (Certificate certificate : result) {
- assertTrue(filenames.contains(certificate.toString().replace(CERTIFICATE_MOCK_PREFIX, "")));
+ final X509Certificate cert = (X509Certificate) certificate;
+ final sun.security.x509.X500Name subjectDN = (sun.security.x509.X500Name) cert.getSubjectDN();
+ final String commonName = subjectDN.getCommonName();
+ assertTrue(names.contains(commonName), commonName + " is not present in expected names set " +
+ "for certificates: " + names + ", cert: " + certificate);
+ }
+
+ }
+
+ @Test
+ public void testReadDebugCertificates() throws IOException {
+
+ // init certificates (from apl-updater/src/main/resources/debug-certs)
+ UpdaterUtil.init(true);
+
+ // read certificates ignoring input parameters
+ Set result = UpdaterUtil.readCertificates("any-dir",
+ "any-prefix", "any-suffix");
+
+ assertNotNull(result);
+ assertEquals(1, result.size()); // same cert
+
+ final Certificate certificate = (Certificate) result.toArray()[0];
+ final X509Certificate cert = (X509Certificate) certificate;
+ final sun.security.x509.X500Name subjectDN = (sun.security.x509.X500Name) cert.getSubjectDN();
+ final String commonName = subjectDN.getCommonName();
+ assertEquals("Andrii Boiarskyi", commonName, commonName + " does not match expected " +
+ "www.firstbridge.io for loaded debug certificate");
+ }
+
+ private void assertHasPair(Set pairs, String devName, String approver) {
+ for (CertificatePair pair : pairs) {
+ final String firstName = getNameFromCert(pair.getSecondCertificate());
+ if (!firstName.equals(devName)) {
+ continue;
+ }
+ final String secondName = getNameFromCert(pair.getFirstCertificate());
+ if (secondName.equals(approver)) {
+ return;
+ }
}
+ fail(pairs + " does not contain certificate pair for 1-dev: " + devName + " and 2-approver: " + approver);
+ }
+ private String getNameFromCert(Certificate certificate) {
+ final X509Certificate cert = (X509Certificate) certificate;
+ final sun.security.x509.X500Name subjectDN = (sun.security.x509.X500Name) cert.getSubjectDN();
+ final String commonName;
+ try {
+ commonName = subjectDN.getCommonName();
+ } catch (IOException e) {
+ throw new RuntimeException(e.toString(), e);
+ }
+ return commonName;
}
}
diff --git a/apl-updater/src/test/resources/certs/1_1.crt b/apl-updater/src/test/resources/test-certs/1_1.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/1_1.crt
rename to apl-updater/src/test/resources/test-certs/1_1.crt
diff --git a/apl-updater/src/test/resources/certs/1_1.key b/apl-updater/src/test/resources/test-certs/1_1.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/1_1.key
rename to apl-updater/src/test/resources/test-certs/1_1.key
diff --git a/apl-updater/src/test/resources/certs/1_2.crt b/apl-updater/src/test/resources/test-certs/1_2.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/1_2.crt
rename to apl-updater/src/test/resources/test-certs/1_2.crt
diff --git a/apl-updater/src/test/resources/certs/1_2.key b/apl-updater/src/test/resources/test-certs/1_2.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/1_2.key
rename to apl-updater/src/test/resources/test-certs/1_2.key
diff --git a/apl-updater/src/test/resources/certs/2_1.crt b/apl-updater/src/test/resources/test-certs/2_1.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/2_1.crt
rename to apl-updater/src/test/resources/test-certs/2_1.crt
diff --git a/apl-updater/src/test/resources/certs/2_1.key b/apl-updater/src/test/resources/test-certs/2_1.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/2_1.key
rename to apl-updater/src/test/resources/test-certs/2_1.key
diff --git a/apl-updater/src/test/resources/certs/2_2.crt b/apl-updater/src/test/resources/test-certs/2_2.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/2_2.crt
rename to apl-updater/src/test/resources/test-certs/2_2.crt
diff --git a/apl-updater/src/test/resources/certs/2_2.key b/apl-updater/src/test/resources/test-certs/2_2.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/2_2.key
rename to apl-updater/src/test/resources/test-certs/2_2.key
diff --git a/apl-updater/src/test/resources/certs/intermediate.crt b/apl-updater/src/test/resources/test-certs/intermediate.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/intermediate.crt
rename to apl-updater/src/test/resources/test-certs/intermediate.crt
diff --git a/apl-updater/src/test/resources/certs/intermediate.key b/apl-updater/src/test/resources/test-certs/intermediate.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/intermediate.key
rename to apl-updater/src/test/resources/test-certs/intermediate.key
diff --git a/apl-updater/src/test/resources/certs/rootCA.crt b/apl-updater/src/test/resources/test-certs/rootCA.crt
similarity index 100%
rename from apl-updater/src/test/resources/certs/rootCA.crt
rename to apl-updater/src/test/resources/test-certs/rootCA.crt
diff --git a/apl-updater/src/test/resources/certs/rootCA.key b/apl-updater/src/test/resources/test-certs/rootCA.key
similarity index 100%
rename from apl-updater/src/test/resources/certs/rootCA.key
rename to apl-updater/src/test/resources/test-certs/rootCA.key
diff --git a/pom.xml b/pom.xml
index 87d1df1f4d..96070ea8d1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
apl-db-updater
apl-dex
apl-vault-wallet
- apl-smc
+ apl-smc
@@ -163,9 +163,21 @@
maven-compiler-plugin
${compile-plugin.version}
- ${java.version}
- ${java.version}
+ ${maven.compiler.source}
+ ${maven.compiler.target}
true
+
+
+ --add-exports
+ --add-opens
+ java.base/sun.security.x509=ALL-UNNAMED
+ java.base/sun.security.pkcs=ALL-UNNAMED
+ java.base/sun.security.provider=ALL-UNNAMED
+ java.base/sun.security.util=ALL-UNNAMED
+ java.base/jdk.internal.misc=ALL-UNNAMED
+ security.util=ALL-UNNAMED
+
+ false
@@ -221,6 +233,15 @@
org.apache.maven.plugins
maven-compiler-plugin
+
+
+
+ --add-exports
+
+
+ java.base/sun.security.x509=ALL-UNNAMED
+
+
false
diff --git a/unit-test-Docker-Image/Dockerfile b/unit-test-Docker-Image/Dockerfile
index 50adda3f6a..7e6324c923 100644
--- a/unit-test-Docker-Image/Dockerfile
+++ b/unit-test-Docker-Image/Dockerfile
@@ -1,40 +1,60 @@
# vim:set ft=dockerfile:
-FROM ubuntu:focal
+FROM ubuntu:jammy
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r mysql && useradd -r -g mysql mysql
-# https://bugs.debian.org/830696 (apt uses gpgv by default in newer releases, rather than gpg)
-RUN set -ex; \
- apt-get update; \
- if ! which gpg; then \
- apt-get install -y --no-install-recommends gnupg; \
- fi; \
- if ! gpg --version | grep -q '^gpg (GnuPG) 1\.'; then \
-# Ubuntu includes "gnupg" (not "gnupg2", but still 2.x), but not dirmngr, and gnupg 2.x requires dirmngr
-# so, if we're not running gnupg 1.x, explicitly install dirmngr too
- apt-get install -y --no-install-recommends dirmngr; \
- fi; \
- rm -rf /var/lib/apt/lists/*
-
# add gosu for easy step-down from root
# https://github.com/tianon/gosu/releases
-ENV GOSU_VERSION 1.12
+# gosu key is B42F6819007F00F88E364FD4036A9C25BF357DD4
+ENV GOSU_VERSION 1.14
+
+ARG GPG_KEYS=177F4010FE56CA3336300305F1656F24C74CD1D8
+# pub rsa4096 2016-03-30 [SC]
+# 177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8
+# uid [ unknown] MariaDB Signing Key
+# sub rsa4096 2016-03-30 [E]
+# install "libjemalloc2" as it offers better performance in some cases. Use with LD_PRELOAD
+# install "pwgen" for randomizing passwords
+# install "tzdata" for /usr/share/zoneinfo/
+# install "xz-utils" for .sql.xz docker-entrypoint-initdb.d files
+# install "zstd" for .sql.zst docker-entrypoint-initdb.d files
+# hadolint ignore=SC2086
RUN set -eux; \
- savedAptMark="$(apt-mark showmanual)"; \
apt-get update; \
- apt-get install -y --no-install-recommends ca-certificates wget; \
+ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
+ ca-certificates \
+ gpg \
+ gpgv \
+ libjemalloc2 \
+ pwgen \
+ tzdata \
+ xz-utils \
+ zstd ; \
+ savedAptMark="$(apt-mark showmanual)"; \
+ apt-get install -y --no-install-recommends \
+ dirmngr \
+ gpg-agent \
+ wget; \
rm -rf /var/lib/apt/lists/*; \
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
- wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
- wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
- export GNUPGHOME="$(mktemp -d)"; \
+ wget -q -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
+ wget -q -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
+ GNUPGHOME="$(mktemp -d)"; \
+ export GNUPGHOME; \
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
+ for key in $GPG_KEYS; do \
+ gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
+ done; \
+ gpg --batch --export "$GPG_KEYS" > /etc/apt/trusted.gpg.d/mariadb.gpg; \
+ if command -v gpgconf >/dev/null; then \
+ gpgconf --kill all; \
+ fi; \
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
gpgconf --kill all; \
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
apt-mark auto '.*' > /dev/null; \
- [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
+ [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark >/dev/null; \
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
chmod +x /usr/local/bin/gosu; \
gosu --version; \
@@ -42,42 +62,33 @@ RUN set -eux; \
RUN mkdir /docker-entrypoint-initdb.d
-# install "pwgen" for randomizing passwords
-# install "tzdata" for /usr/share/zoneinfo/
-# install "xz-utils" for .sql.xz docker-entrypoint-initdb.d files
-RUN set -ex; \
- apt-get update; \
- apt-get install -y --no-install-recommends \
- pwgen \
- tzdata \
- xz-utils \
- ; \
- rm -rf /var/lib/apt/lists/*
+# Ensure the container exec commands handle range of utf8 characters based of
+# default locales in base image (https://github.com/docker-library/docs/blob/135b79cc8093ab02e55debb61fdb079ab2dbce87/ubuntu/README.md#locales)
+ENV LANG C.UTF-8
-ENV GPG_KEYS \
-# pub rsa4096 2016-03-30 [SC]
-# 177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8
-# uid [ unknown] MariaDB Signing Key
-# sub rsa4096 2016-03-30 [E]
- 177F4010FE56CA3336300305F1656F24C74CD1D8
-RUN set -ex; \
- export GNUPGHOME="$(mktemp -d)"; \
- for key in $GPG_KEYS; do \
- gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
- done; \
- gpg --batch --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mariadb.gpg; \
- command -v gpgconf > /dev/null && gpgconf --kill all || :; \
- rm -r "$GNUPGHOME"; \
- apt-key list
+# OCI annotations to image
+LABEL org.opencontainers.image.authors="MariaDB Community" \
+ org.opencontainers.image.title="MariaDB Database" \
+ org.opencontainers.image.description="MariaDB Database for relational SQL" \
+ org.opencontainers.image.documentation="https://hub.docker.com/_/mariadb/" \
+ org.opencontainers.image.base.name="docker.io/library/ubuntu:jammy" \
+ org.opencontainers.image.licenses="GPL-2.0" \
+ org.opencontainers.image.source="https://github.com/MariaDB/mariadb-docker" \
+ org.opencontainers.image.vendor="MariaDB Community" \
+ org.opencontainers.image.version="10.11.2" \
+ org.opencontainers.image.url="https://github.com/MariaDB/mariadb-docker"
-# bashbrew-architectures: amd64 arm64v8 ppc64le
-ENV MARIADB_MAJOR 10.5
-ENV MARIADB_VERSION 1:10.5.8+maria~focal
+# bashbrew-architectures: amd64 arm64v8 ppc64le s390x
+ARG MARIADB_VERSION=1:10.11.2+maria~ubu2204
+ENV MARIADB_VERSION $MARIADB_VERSION
# release-status:Stable
-# (https://downloads.mariadb.org/mariadb/+releases/)
+# (https://downloads.mariadb.org/rest-api/mariadb/)
+
+# Allowing overriding of REPOSITORY, a URL that includes suite and component for testing and Enterprise Versions
+ARG REPOSITORY="http://archive.mariadb.org/mariadb-10.11.2/repo/ubuntu/ jammy main"
RUN set -e;\
- echo "deb http://ftp.osuosl.org/pub/mariadb/repo/$MARIADB_MAJOR/ubuntu focal main" > /etc/apt/sources.list.d/mariadb.list; \
+ echo "deb ${REPOSITORY}" > /etc/apt/sources.list.d/mariadb.list; \
{ \
echo 'Package: *'; \
echo 'Pin: release o=MariaDB'; \
@@ -88,17 +99,15 @@ RUN set -e;\
# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# also, we set debconf keys to make APT a little quieter
+# hadolint ignore=DL3015
RUN set -ex; \
{ \
- echo "mariadb-server-$MARIADB_MAJOR" mysql-server/root_password password 'unused'; \
- echo "mariadb-server-$MARIADB_MAJOR" mysql-server/root_password_again password 'unused'; \
+ echo "mariadb-server" mysql-server/root_password password 'unused'; \
+ echo "mariadb-server" mysql-server/root_password_again password 'unused'; \
} | debconf-set-selections; \
apt-get update; \
- apt-get install -y \
- "mariadb-server=$MARIADB_VERSION" \
# mariadb-backup is installed at the same time so that `mysql-common` is only installed once from just mariadb repos
- mariadb-backup \
- socat \
+ apt-get install -y --no-install-recommends mariadb-server="$MARIADB_VERSION" mariadb-backup socat \
; \
# APOLLO addition START (install rocksdb plugin and nano editor)
apt-get -y install mariadb-plugin-rocksdb -f; \
@@ -116,14 +125,22 @@ RUN set -ex; \
| xargs -0 grep -lZE '^(bind-address|log|user\s)' \
| xargs -rt -0 sed -Ei 's/^(bind-address|log|user\s)/#&/'; \
# don't reverse lookup hostnames, they are usually another container
- echo '[mysqld]\nskip-host-cache\nskip-name-resolve' > /etc/mysql/conf.d/docker.cnf
+ printf "[mariadb]\nhost-cache-size=0\nskip-name-resolve\n" > /etc/mysql/mariadb.conf.d/05-skipcache.cnf; \
+# Issue #327 Correct order of reading directories /etc/mysql/mariadb.conf.d before /etc/mysql/conf.d (mount-point per documentation)
+ if [ -L /etc/mysql/my.cnf ]; then \
+# 10.5+
+ sed -i -e '/includedir/ {N;s/\(.*\)\n\(.*\)/\n\2\n\1/}' /etc/mysql/mariadb.cnf; \
+ fi
+
VOLUME /var/lib/mysql
+COPY healthcheck.sh /usr/local/bin/healthcheck.sh
+COPY docker-entrypoint.sh /usr/local/bin/
# APOLLO copy docker-entrypoint.sh and PUT root's exec permissions to it
USER root
-COPY --chown=root:root docker-entrypoint.sh /usr/local/bin/
-RUN chmod +x /usr/local/bin/docker-entrypoint.sh
+#COPY --chown=root:root docker-entrypoint.sh /usr/local/bin/
+#RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# APOLLO addition START (set max_connections to = 1024)
USER mysql
COPY --chown=mysql:mysql my_conf.cnf /etc/mysql/my.cnf
@@ -132,4 +149,4 @@ RUN chmod -R 0444 /etc/mysql/my.cnf
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306
-CMD ["mysqld"]
\ No newline at end of file
+CMD ["mariadbd"]
\ No newline at end of file
diff --git a/unit-test-Docker-Image/Dockerfile_light b/unit-test-Docker-Image/Dockerfile_light
deleted file mode 100644
index e742e1e9d4..0000000000
--- a/unit-test-Docker-Image/Dockerfile_light
+++ /dev/null
@@ -1,27 +0,0 @@
-FROM mariadb:10.5.5
-
-USER root
-
-# Prevent 'systemctl' from being executed
-ARG DEBIAN_FRONTEND=noninteractive
-RUN DEBIAN_FRONTEND=noninteractive;
-RUN export DEBIAN_FRONTEND=noninteractive
-
-# Prevent 'systemctl' from being executed
-RUN dpkg-divert --add /bin/systemctl && ln -sT /bin/true /bin/systemctl
-
-RUN apt-get update
-
-RUN apt-get -y install sudo dialog apt-utils
-
-RUN apt-get -y install mariadb-plugin-rocksdb -f
-
-ENV MYSQL_ROOT_HOST=% \
- MYSQL_USER=testuser \
- MYSQL_PASSWORD=testpass \
- MYSQL_DATABASE=testdb \
- MYSQL_ROOT_PASSWORD=rootpass
-
-ADD . /
-
-RUN rm -rf /var/cache/apt/lists/*
diff --git a/unit-test-Docker-Image/README.md b/unit-test-Docker-Image/README.md
index 58ee2bac5e..8d75232529 100644
--- a/unit-test-Docker-Image/README.md
+++ b/unit-test-Docker-Image/README.md
@@ -4,7 +4,7 @@ Dockerfile file uses official script from repo
for building container's image in folder
/unit-test-Docker-Image
Original script is :
-https://github.com/docker-library/mariadb/blob/master/10.5/
+https://github.com/docker-library/mariadb/blob/master/10.11/
and it is modified to our needs.
MariaDb in docker info - https://hub.docker.com/_/mariadb/
@@ -19,38 +19,38 @@ https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-o
1.1 Go to sub folder to build a new image :
-$ cd unit-test-Docker-Image
+> cd unit-test-Docker-Image
-1.2 Build a new image named 'mariadb:10.5' by running script 'Dockerfile' in the folder /unit-test-Docker-Image :
+1.2 Build a new image named 'mariadb:10.11' by running script 'Dockerfile' in the folder /unit-test-Docker-Image :
-$ docker build -t mariadb:10.5 .
+> docker build -t mariadb:10.11 .
1.3 CHECKING. Start up a new container by using created image 'mariadb:10.5' and give it a name 'apl-mariadb':
-$ docker run -p 3306:3306 \
+> docker run -p 3306:3306 \
--name apl-mariadb \
-e MYSQL_ROOT_HOST=% \
-e MYSQL_ROOT_PASSWORD=rootpass \
-e MYSQL_DATABASE=testdb \
-e MYSQL_USER=testuser \
-e MYSQL_PASSWORD=testpass \
- -d mariadb:10.5
+ -d mariadb:10.11
You can stop reading here if your local docker image has been built successfully. You can try run 'slow' unit tests with mariadb in docker by using command:
-$ mvn test -Dgroups="slow"
+> mvn test -Dgroups="slow"
#### 2. Check connectivity with mariadb run docker container
#### Check if docker run and run it if it's needed
-$ $ docker ps -a
+> docker ps -a
-| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
-|:---|:---:|:---|:---:|:---:|:---:|:---:|
-| da72e6287db9 | mariadb:10.5 | "docker-entrypoint.sā¦" | 14 hours ago | Up 1 second | 0.0.0.0:3306->3306/tcp | apl-mariadb |
+| CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
+|:---|:-------------:|:---|:---:|:---:|:---:|:---:|
+| da72e6287db9 | mariadb:10.11 | "docker-entrypoint.sā¦" | 14 hours ago | Up 1 second | 0.0.0.0:3306->3306/tcp | apl-mariadb |
See run container with NAME = apl-mariadb and STATUS = Up
@@ -58,23 +58,23 @@ You can start created container by command: $ docker start apl-mariadb
2.1 Quick check mariadb is accessible on local PC :
-$ mysql -h 127.0.0.1 -P3306 -u root -prootpass
+> mysql -h 127.0.0.1 -P3306 -u root -prootpass
2.2 Quick check by access with 'testuser' on local PC :
-$ mysql -h 127.0.0.1 -P3306 -u testuser -ptestpass
+> mysql -h 127.0.0.1 -P3306 -u testuser -ptestpass
2.3 You can look for all mariadb image optional run parameters by command:
-$ docker run -it --rm mariadb:10.5 --verbose --help
+> docker run -it --rm mariadb:10.11 --verbose --help
2.4 Quickly check that MyRocks is enabled:
-$ mysql -uroot -prootpass -h127.0.0.1 -P3306
+> mysql -uroot -prootpass -h127.0.0.1 -P3306
or
-$ mysql -h 172.17.0.2 -u root -prootpass
+> mysql -h 172.17.0.2 -u root -prootpass
mysql> show engines;
@@ -93,39 +93,39 @@ mysql> show engines;
3.1 Start container by name
-$ docker start apl-mariadb
+> docker start apl-mariadb
3.2 Stop container by name
-$ docker stop apl-mariadb
+> docker stop apl-mariadb
3.3 Restart container
-$ docker restart mariadbtest
+> docker restart apl-mariadb
3.4 Connect to MariaDb container bash
-$ docker exec -it apl-mariadb bash
+> docker exec -it apl-mariadb bash
3.5 See logs for running container (troubleshooting)
-$ docker logs apl-mariadb
+> docker logs apl-mariadb
3.6 Find the IP address that has been assigned to the container:
-$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apl-mariadb
+> docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apl-mariadb
3.7 Kill container
-docker kill apl-mariadb
+> docker kill apl-mariadb
3.8 Remove container (not a saved data ! )
-$ docker rm apl-mariadb
+> docker rm apl-mariadb
3.9 Remove data related to container
-$ docker rm -v apl-mariadb
+> docker rm -v apl-mariadb
##### 4. Useful SQL
diff --git a/unit-test-Docker-Image/docker-entrypoint.sh b/unit-test-Docker-Image/docker-entrypoint.sh
index 1e32861045..a4608f3c59 100644
--- a/unit-test-Docker-Image/docker-entrypoint.sh
+++ b/unit-test-Docker-Image/docker-entrypoint.sh
@@ -46,6 +46,18 @@ file_env() {
unset "$fileVar"
}
+# set MARIADB_xyz from MYSQL_xyz when MARIADB_xyz is unset
+# and make them the same value (so user scripts can use either)
+_mariadb_file_env() {
+ local var="$1"; shift
+ local maria="MARIADB_${var#MYSQL_}"
+ file_env "$var" "$@"
+ file_env "$maria" "${!var}"
+ if [ "${!maria:-}" ]; then
+ export "$var"="${!maria}"
+ fi
+}
+
# check to see if this file is being run or sourced from another script
_is_sourced() {
# https://unix.stackexchange.com/a/215279
@@ -59,6 +71,8 @@ _is_sourced() {
# process initializer files, based on file extensions
docker_process_init_files() {
# mysql here for backwards compatibility "${mysql[@]}"
+ # ShellCheck: mysql appears unused. Verify use (or export if used externally)
+ # shellcheck disable=SC2034
mysql=( docker_process_sql )
echo
@@ -73,47 +87,59 @@ docker_process_init_files() {
"$f"
else
mysql_note "$0: sourcing $f"
+ # ShellCheck can't follow non-constant source. Use a directive to specify location.
+ # shellcheck disable=SC1090
. "$f"
fi
;;
- *.sql) mysql_note "$0: running $f"; docker_process_sql < "$f"; echo ;;
- *.sql.gz) mysql_note "$0: running $f"; gunzip -c "$f" | docker_process_sql; echo ;;
- *.sql.xz) mysql_note "$0: running $f"; xzcat "$f" | docker_process_sql; echo ;;
- *) mysql_warn "$0: ignoring $f" ;;
+ *.sql) mysql_note "$0: running $f"; docker_process_sql < "$f"; echo ;;
+ *.sql.gz) mysql_note "$0: running $f"; gunzip -c "$f" | docker_process_sql; echo ;;
+ *.sql.xz) mysql_note "$0: running $f"; xzcat "$f" | docker_process_sql; echo ;;
+ *.sql.zst) mysql_note "$0: running $f"; zstd -dc "$f" | docker_process_sql; echo ;;
+ *) mysql_warn "$0: ignoring $f" ;;
esac
echo
done
}
+# arguments necessary to run "mariadbd --verbose --help" successfully (used for testing configuration validity and for extracting default/configured values)
+_verboseHelpArgs=(
+ --verbose --help
+)
+
mysql_check_config() {
- local toRun=( "$@" --verbose --help --log-bin-index="$(mktemp -u)" ) errors
+ local toRun=( "$@" "${_verboseHelpArgs[@]}" ) errors
if ! errors="$("${toRun[@]}" 2>&1 >/dev/null)"; then
- mysql_error $'mysqld failed while attempting to check config\n\tcommand was: '"${toRun[*]}"$'\n\t'"$errors"
+ mysql_error $'mariadbd failed while attempting to check config\n\tcommand was: '"${toRun[*]}"$'\n\t'"$errors"
fi
}
# Fetch value from server config
-# We use mysqld --verbose --help instead of my_print_defaults because the
+# We use mariadbd --verbose --help instead of my_print_defaults because the
# latter only show values present in config files, and not server defaults
mysql_get_config() {
local conf="$1"; shift
- "$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null \
+ "$@" "${_verboseHelpArgs[@]}" 2>/dev/null \
| awk -v conf="$conf" '$1 == conf && /^[^ \t]/ { sub(/^[^ \t]+[ \t]+/, ""); print; exit }'
# match "datadir /some/path with/spaces in/it here" but not "--xyz=abc\n datadir (xyz)"
}
-# Do a temporary startup of the MySQL server, for init purposes
+# Do a temporary startup of the MariaDB server, for init purposes
docker_temp_server_start() {
- "$@" --skip-networking --socket="${SOCKET}" &
+ "$@" --skip-networking --default-time-zone=SYSTEM --socket="${SOCKET}" --wsrep_on=OFF \
+ --expire-logs-days=0 \
+ --loose-innodb_buffer_pool_load_at_startup=0 &
+ declare -g MARIADB_PID
+ MARIADB_PID=$!
mysql_note "Waiting for server startup"
+ # only use the root password if the database has already been initialized
+ # so that it won't try to fill in a password file when it hasn't been set yet
+ extraArgs=()
+ if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
+ extraArgs+=( '--dont-use-mysql-root-password' )
+ fi
local i
for i in {30..0}; do
- # only use the root password if the database has already been initializaed
- # so that it won't try to fill in a password file when it hasn't been set yet
- extraArgs=()
- if [ -z "$DATABASE_ALREADY_EXISTS" ]; then
- extraArgs+=( '--dont-use-mysql-root-password' )
- fi
if docker_process_sql "${extraArgs[@]}" --database=mysql <<<'SELECT 1' &> /dev/null; then
break
fi
@@ -124,18 +150,24 @@ docker_temp_server_start() {
fi
}
-# Stop the server. When using a local socket file mysqladmin will block until
+# Stop the server. When using a local socket file mariadb-admin will block until
# the shutdown is complete.
docker_temp_server_stop() {
- if ! mysqladmin --defaults-extra-file=<( _mysql_passfile ) shutdown -uroot --socket="${SOCKET}"; then
- mysql_error "Unable to shut down server."
- fi
+ kill "$MARIADB_PID"
+ wait "$MARIADB_PID"
}
# Verify that the minimally required password settings are set for new databases.
docker_verify_minimum_env() {
- if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
- mysql_error $'Database is uninitialized and password option is not specified\n\tYou need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'
+ if [ -z "$MARIADB_ROOT_PASSWORD" ] && [ -z "$MARIADB_ROOT_PASSWORD_HASH" ] && [ -z "$MARIADB_ALLOW_EMPTY_ROOT_PASSWORD" ] && [ -z "$MARIADB_RANDOM_ROOT_PASSWORD" ]; then
+ mysql_error $'Database is uninitialized and password option is not specified\n\tYou need to specify one of MARIADB_ROOT_PASSWORD, MARIADB_ROOT_PASSWORD_HASH, MARIADB_ALLOW_EMPTY_ROOT_PASSWORD and MARIADB_RANDOM_ROOT_PASSWORD'
+ fi
+ # More preemptive exclusions of combinations should have been made before *PASSWORD_HASH was added, but for now we don't enforce due to compatibility.
+ if [ -n "$MARIADB_ROOT_PASSWORD" ] || [ -n "$MARIADB_ALLOW_EMPTY_ROOT_PASSWORD" ] || [ -n "$MARIADB_RANDOM_ROOT_PASSWORD" ] && [ -n "$MARIADB_ROOT_PASSWORD_HASH" ]; then
+ mysql_error "Cannot specify MARIADB_ROOT_PASSWORD_HASH and another MARIADB_ROOT_PASSWORD* option."
+ fi
+ if [ -n "$MARIADB_PASSWORD" ] && [ -n "$MARIADB_PASSWORD_HASH" ]; then
+ mysql_error "Cannot specify MARIADB_PASSWORD_HASH and MARIADB_PASSWORD option."
fi
}
@@ -150,22 +182,31 @@ docker_create_db_directories() {
if [ "$user" = "0" ]; then
# this will cause less disk access than `chown -R`
- find "$DATADIR" \! -user mysql -exec chown mysql '{}' +
+ find "$DATADIR" \! -user mysql -exec chown mysql: '{}' +
+ # See https://github.com/MariaDB/mariadb-docker/issues/363
+ find "${SOCKET%/*}" -maxdepth 0 \! -user mysql -exec chown mysql: '{}' \;
fi
}
+_mariadb_version() {
+ local mariaVersion="${MARIADB_VERSION##*:}"
+ mariaVersion="${mariaVersion%%[-+~]*}"
+ echo -n "${mariaVersion}-MariaDB"
+}
+
# initializes the database directory
docker_init_database_dir() {
mysql_note "Initializing database files"
- installArgs=( --datadir="$DATADIR" --rpm )
- if { mysql_install_db --help || :; } | grep -q -- '--auth-root-authentication-method'; then
- # beginning in 10.4.3, install_db uses "socket" which only allows system user root to connect, switch back to "normal" to allow mysql root without a password
- # see https://github.com/MariaDB/server/commit/b9f3f06857ac6f9105dc65caae19782f09b47fb3
- # (this flag doesn't exist in 10.0 and below)
- installArgs+=( --auth-root-authentication-method=normal )
- fi
- # "Other options are passed to mysqld." (so we pass all "mysqld" arguments directly here)
- mysql_install_db "${installArgs[@]}" "${@:2}"
+ installArgs=( --datadir="$DATADIR" --rpm --auth-root-authentication-method=normal )
+ # "Other options are passed to mariadbd." (so we pass all "mysqld" arguments directly here)
+ mariadb-install-db "${installArgs[@]}" "${@:2}" \
+ --skip-test-db \
+ --old-mode='UTF8_IS_UTF8MB3' \
+ --default-time-zone=SYSTEM --enforce-storage-engine= \
+ --skip-log-bin \
+ --expire-logs-days=0 \
+ --loose-innodb_buffer_pool_load_at_startup=0 \
+ --loose-innodb_buffer_pool_dump_at_shutdown=0
mysql_note "Database files initialized"
}
@@ -177,12 +218,24 @@ docker_setup_env() {
DATADIR="$(mysql_get_config 'datadir' "$@")"
SOCKET="$(mysql_get_config 'socket' "$@")"
+
# Initialize values that might be stored in a file
- file_env 'MYSQL_ROOT_HOST' '%'
- file_env 'MYSQL_DATABASE'
- file_env 'MYSQL_USER'
- file_env 'MYSQL_PASSWORD'
- file_env 'MYSQL_ROOT_PASSWORD'
+ _mariadb_file_env 'MYSQL_ROOT_HOST' '%'
+ _mariadb_file_env 'MYSQL_DATABASE'
+ _mariadb_file_env 'MYSQL_USER'
+ _mariadb_file_env 'MYSQL_PASSWORD'
+ _mariadb_file_env 'MYSQL_ROOT_PASSWORD'
+ # No MYSQL_ compatibility needed for new variables
+ file_env 'MARIADB_PASSWORD_HASH'
+ file_env 'MARIADB_ROOT_PASSWORD_HASH'
+
+ # set MARIADB_ from MYSQL_ when it is unset and then make them the same value
+ : "${MARIADB_ALLOW_EMPTY_ROOT_PASSWORD:=${MYSQL_ALLOW_EMPTY_PASSWORD:-}}"
+ export MYSQL_ALLOW_EMPTY_PASSWORD="$MARIADB_ALLOW_EMPTY_ROOT_PASSWORD" MARIADB_ALLOW_EMPTY_ROOT_PASSWORD
+ : "${MARIADB_RANDOM_ROOT_PASSWORD:=${MYSQL_RANDOM_ROOT_PASSWORD:-}}"
+ export MYSQL_RANDOM_ROOT_PASSWORD="$MARIADB_RANDOM_ROOT_PASSWORD" MARIADB_RANDOM_ROOT_PASSWORD
+ : "${MARIADB_INITDB_SKIP_TZINFO:=${MYSQL_INITDB_SKIP_TZINFO:-}}"
+ export MYSQL_INITDB_SKIP_TZINFO="$MARIADB_INITDB_SKIP_TZINFO" MARIADB_INITDB_SKIP_TZINFO
declare -g DATABASE_ALREADY_EXISTS
if [ -d "$DATADIR/mysql" ]; then
@@ -190,114 +243,233 @@ docker_setup_env() {
fi
}
+# Execute the client, use via docker_process_sql to handle root password
+docker_exec_client() {
+ # args sent in can override this db, since they will be later in the command
+ if [ -n "$MYSQL_DATABASE" ]; then
+ set -- --database="$MYSQL_DATABASE" "$@"
+ fi
+ mariadb --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" "$@"
+}
+
# Execute sql script, passed via stdin
# usage: docker_process_sql [--dont-use-mysql-root-password] [mysql-cli-args]
# ie: docker_process_sql --database=mydb <<<'INSERT ...'
# ie: docker_process_sql --dont-use-mysql-root-password --database=mydb "${DATADIR}/${backup_db}"; then
+ mysql_error "Unable backup system database for upgrade from $oldfullversion."
+ fi
+ mysql_note "Backing up complete"
+}
- docker_process_sql --database=mysql <<<"FLUSH PRIVILEGES ;"
+# perform mariadb-upgrade
+# backup the mysql database if this is a major upgrade
+docker_mariadb_upgrade() {
+ if [ -z "$MARIADB_AUTO_UPGRADE" ] \
+ || [ "$MARIADB_AUTO_UPGRADE" = 0 ]; then
+ mysql_note "MariaDB upgrade (mariadb-upgrade) required, but skipped due to \$MARIADB_AUTO_UPGRADE setting"
+ return
fi
+ mysql_note "Starting temporary server"
+ docker_temp_server_start "$@" --skip-grant-tables \
+ --loose-innodb_buffer_pool_dump_at_shutdown=0 \
+ --skip-slave-start
+ mysql_note "Temporary server started."
+
+ docker_mariadb_backup_system
+
+ mysql_note "Starting mariadb-upgrade"
+ mariadb-upgrade --upgrade-system-tables
+ mysql_note "Finished mariadb-upgrade"
+
+ mysql_note "Stopping temporary server"
+ docker_temp_server_stop
+ mysql_note "Temporary server stopped"
}
-_mysql_passfile() {
- # echo the password to the "file" the client uses
- # the client command will use process substitution to create a file on the fly
- # ie: --defaults-extra-file=<( _mysql_passfile )
- if [ '--dont-use-mysql-root-password' != "$1" ] && [ -n "$MYSQL_ROOT_PASSWORD" ]; then
- cat <<-EOF
- [client]
- password="${MYSQL_ROOT_PASSWORD}"
- EOF
+
+_check_if_upgrade_is_needed() {
+ if [ ! -f "$DATADIR"/mysql_upgrade_info ]; then
+ mysql_note "MariaDB upgrade information missing, assuming required"
+ return 0
+ fi
+ local mariadbVersion
+ mariadbVersion="$(_mariadb_version)"
+ IFS='.-' read -ra newversion <<<"$mariadbVersion"
+ IFS='.-' read -ra oldversion < "$DATADIR"/mysql_upgrade_info || true
+
+ if [[ ${#newversion[@]} -lt 2 ]] || [[ ${#oldversion[@]} -lt 2 ]] \
+ || [[ ${oldversion[0]} -lt ${newversion[0]} ]] \
+ || [[ ${oldversion[0]} -eq ${newversion[0]} && ${oldversion[1]} -lt ${newversion[1]} ]]; then
+ return 0
fi
+ mysql_note "MariaDB upgrade not required"
+ return 1
}
-# check arguments for an option that would cause mysqld to stop
+# check arguments for an option that would cause mariadbd to stop
# return true if there is one
_mysql_want_help() {
local arg
@@ -312,14 +484,15 @@ _mysql_want_help() {
}
_main() {
- # if command starts with an option, prepend mysqld
+ # if command starts with an option, prepend mariadbd
if [ "${1:0:1}" = '-' ]; then
- set -- mysqld "$@"
+ set -- mariadbd "$@"
fi
+ #ENDOFSUBSTITUTIONS
# skip setup if they aren't running mysqld or want an option that stops mysqld
- if [ "$1" = 'mysqld' ] && ! _mysql_want_help "$@"; then
- mysql_note "Entrypoint script for MySQL Server ${MARIADB_VERSION} started."
+ if [ "$1" = 'mariadbd' ] || [ "$1" = 'mysqld' ] && ! _mysql_want_help "$@"; then
+ mysql_note "Entrypoint script for MariaDB Server ${MARIADB_VERSION} started."
mysql_check_config "$@"
# Load various environment variables
@@ -329,7 +502,7 @@ _main() {
# If container is started as root user, restart as dedicated mysql user
if [ "$(id -u)" = "0" ]; then
mysql_note "Switching to dedicated user 'mysql'"
- exec gosu mysql "$BASH_SOURCE" "$@"
+ exec gosu mysql "${BASH_SOURCE[0]}" "$@"
fi
# there's no database, so it needs to be initialized
@@ -348,14 +521,27 @@ _main() {
docker_setup_db
docker_process_init_files /docker-entrypoint-initdb.d/*
+ # Wait until after /docker-entrypoint-initdb.d is performed before setting
+ # root@localhost password to a hash we don't know the password for.
+ if [ -n "${MARIADB_ROOT_PASSWORD_HASH}" ]; then
+ mysql_note "Setting root@localhost password hash"
+ docker_process_sql --dont-use-mysql-root-password --binary-mode <<-EOSQL
+ SET @@SESSION.SQL_LOG_BIN=0;
+ SET PASSWORD FOR 'root'@'localhost'= '${MARIADB_ROOT_PASSWORD_HASH}';
+ EOSQL
+ fi
mysql_note "Stopping temporary server"
docker_temp_server_stop
mysql_note "Temporary server stopped"
echo
- mysql_note "MySQL init process done. Ready for start up."
+ mysql_note "MariaDB init process done. Ready for start up."
echo
+ # MDEV-27636 mariadb_upgrade --check-if-upgrade-is-needed cannot be run offline
+ #elif mariadb-upgrade --check-if-upgrade-is-needed; then
+ elif _check_if_upgrade_is_needed; then
+ docker_mariadb_upgrade "$@"
fi
fi
exec "$@"
diff --git a/unit-test-Docker-Image/healthcheck.sh b/unit-test-Docker-Image/healthcheck.sh
new file mode 100644
index 0000000000..c8caa69fec
--- /dev/null
+++ b/unit-test-Docker-Image/healthcheck.sh
@@ -0,0 +1,334 @@
+#!/bin/bash
+#
+# Healthcheck script for MariaDB
+#
+# Runs various tests on the MariaDB server to check its health. Pass the tests
+# to run as arguments. If all tests succeed, the server is considered healthy,
+# otherwise it's not.
+#
+# Arguments are processed in strict order. Set replication_* options before
+# the --replication option. This allows a different set of replication checks
+# on different connections.
+#
+# --su{=|-mariadb} is option to run the healthcheck as a different unix user.
+# Useful if mariadb@localhost user exists with unix socket authentication
+# Using this option disregards previous options set, so should usually be the
+# first option.
+#
+# Some tests require SQL privileges.
+#
+# TEST MINIMUM GRANTS REQUIRED
+# connect none*
+# innodb_initialized USAGE
+# innodb_buffer_pool_loaded USAGE
+# galera_online USAGE
+# replication REPLICATION_CLIENT (<10.5)or REPLICA MONITOR (10.5+)
+# mariadbupgrade none, however unix user permissions on datadir
+#
+# The SQL user used is the default for the mariadb client. This can be the unix user
+# if no user(or password) is set in the [mariadb-client] section of a configuration
+# file. --defaults-{file,extra-file,group-suffix} can specify a file/configuration
+# different from elsewhere.
+#
+# Note * though denied error message will result in error log without
+# any permissions.
+
+set -eo pipefail
+
+_process_sql()
+{
+ mariadb ${nodefaults:+--no-defaults} \
+ ${def['file']:+--defaults-file=${def['file']}} \
+ ${def['extra_file']:+--defaults-extra-file=${def['extra_file']}} \
+ ${def['group_suffix']:+--defaults-group-suffix=${def['group_suffix']}} \
+ -B "$@"
+}
+
+# TESTS
+
+
+# CONNECT
+#
+# Tests that a connection can be made over TCP, the final state
+# of the entrypoint and is listening. The authentication used
+# isn't tested.
+connect()
+{
+ set +e +o pipefail
+ mariadb ${nodefaults:+--no-defaults} \
+ ${def['file']:+--defaults-file=${def['file']}} \
+ ${def['extra_file']:+--defaults-extra-file=${def['extra_file']}} \
+ ${def['group_suffix']:+--defaults-group-suffix=${def['group_suffix']}} \
+ -h localhost --protocol tcp -e 'select 1' 2>&1 \
+ | grep -qF "Can't connect"
+ local ret=${PIPESTATUS[1]}
+ set -eo pipefail
+ if (( "$ret" == 0 )); then
+ # grep Matched "Can't connect" so we fail
+ return 1
+ fi
+ return 0
+}
+
+# INNODB_INITIALIZED
+#
+# This tests that the crash recovery of InnoDB has completed
+# along with all the other things required to make it to a healthy
+# operational state. Note this may return true in the early
+# states of initialization. Use with a connect test to avoid
+# these false positives.
+innodb_initialized()
+{
+ local s
+ s=$(_process_sql --skip-column-names -e 'select 1 from information_schema.ENGINES WHERE engine="innodb" AND support in ("YES", "DEFAULT", "ENABLED")')
+ [ "$s" == 1 ]
+}
+
+# INNODB_BUFFER_POOL_LOADED
+#
+# Tests the load of the innodb buffer pool as been complete
+# implies innodb_buffer_pool_load_at_startup=1 (default), or if
+# manually SET innodb_buffer_pool_load_now=1
+innodb_buffer_pool_loaded()
+{
+ local s
+ s=$(_process_sql --skip-column-names -e 'select VARIABLE_VALUE from information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="Innodb_buffer_pool_load_status"')
+ if [[ $s =~ 'load completed' ]]; then
+ return 0
+ fi
+ return 1
+}
+
+# GALERA_ONLINE
+#
+# Tests that the galera node is in the SYNCed state
+galera_online()
+{
+ local s
+ s=$(_process_sql --skip-column-names -e 'select VARIABLE_VALUE from information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="WSREP_LOCAL_STATE"')
+ # 4 from https://galeracluster.com/library/documentation/node-states.html#node-state-changes
+ # not https://xkcd.com/221/
+ if [[ $s -eq 4 ]]; then
+ return 0
+ fi
+ return 1
+}
+
+# REPLICATION
+#
+# Tests the replication has the required set of functions:
+# --replication_all -> Checks all replication sources
+# --replication_name=n -> sets the multisource connection name tested
+# --replication_io -> IO thread is running
+# --replication_sql -> SQL thread is running
+# --replication_seconds_behind_master=n -> less than or equal this seconds of delay
+# --replication_sql_remaining_delay=n -> less than or equal this seconds of remaining delay
+# (ref: https://mariadb.com/kb/en/delayed-replication/)
+replication()
+{
+ # SHOW REPLICA available 10.5+
+ # https://github.com/koalaman/shellcheck/issues/2383
+ # shellcheck disable=SC2016,SC2026
+ _process_sql -e "show ${repl['all']:+all} slave${repl['all']:+s} ${repl['name']:+'${repl['name']}'} status\G" | \
+ {
+ # required for trim of leading space.
+ shopt -s extglob
+ # Row header
+ read -t 5 -r
+ # read timeout
+ [ $? -gt 128 ] && return 1
+ while IFS=":" read -t 1 -r n v; do
+ # Trim leading space
+ n=${n##+([[:space:]])}
+ # Leading space on all values by the \G format needs to be trimmed.
+ v=${v:1}
+ case "$n" in
+ Slave_IO_Running)
+ if [ -n "${repl['io']}" ] && [ "$v" = 'No' ]; then
+ return 1
+ fi
+ ;;
+ Slave_SQL_Running)
+ if [ -n "${repl['sql']}" ] && [ "$v" = 'No' ]; then
+ return 1
+ fi
+ ;;
+ Seconds_Behind_Master)
+ # A NULL value is the IO thread not running:
+ if [ -n "${repl['seconds_behind_master']}" ] &&
+ { [ "$v" = NULL ] ||
+ (( "${repl['seconds_behind_master']}" < "$v" )); }; then
+ return 1
+ fi
+ ;;
+ SQL_Remaining_Delay)
+ # Unlike Seconds_Behind_Master, sql_remaining_delay will hit NULL
+ # once replication is caught up - https://mariadb.com/kb/en/delayed-replication/
+ if [ -n "${repl['sql_remaining_delay']}" ] &&
+ [ "$v" != NULL ] &&
+ (( "${repl['sql_remaining_delay']}" < "$v" )); then
+ return 1
+ fi
+ ;;
+ esac
+ done
+ # read timeout
+ [ $? -gt 128 ] && return 1
+ return 0
+ }
+ # reachable in command not found(?)
+ # shellcheck disable=SC2317
+ return $?
+}
+
+# mariadbupgrade
+#
+# Test the lock on the file $datadir/mysql_upgrade_info
+# https://jira.mariadb.org/browse/MDEV-27068
+mariadbupgrade()
+{
+ local f="$datadir/mysql_upgrade_info"
+ if [ -r "$f" ]; then
+ flock --exclusive --nonblock -n 9 9<"$f"
+ return $?
+ fi
+ return 0
+}
+
+
+# MAIN
+
+if [ $# -eq 0 ]; then
+ echo "At least one argument required" >&2
+ exit 1
+fi
+
+#ENDOFSUBSTITUTIONS
+# Marks the end of mysql -> mariadb name changes in 10.6+
+# Global variables used by tests
+declare -A repl
+declare -A def
+nodefaults=
+datadir=/var/lib/mysql
+
+_repl_param_check()
+{
+ case "$1" in
+ seconds_behind_master) ;&
+ sql_remaining_delay)
+ if [ -z "${repl['io']}" ]; then
+ repl['io']=1
+ echo "Forcing --replication_io=1, $1 requires IO thread to be running" >&2
+ fi
+ ;;
+ all)
+ if [ -n "${repl['name']}" ]; then
+ unset 'repl[name]'
+ echo "Option --replication_all incompatible with specified source --replication_name, clearing replication_name" >&2
+ fi
+ ;;
+ name)
+ if [ -n "${repl['all']}" ]; then
+ unset 'repl[all]'
+ echo "Option --replication_name incompatible with --replication_all, clearing replication_all" >&2
+ fi
+ ;;
+ esac
+}
+
+_test_exists() {
+ declare -F "$1" > /dev/null
+ return $?
+}
+
+while [ $# -gt 0 ]; do
+ case "$1" in
+ --su=*)
+ u="${1#*=}"
+ shift
+ exec gosu "${u}" "${BASH_SOURCE[0]}" "$@"
+ ;;
+ --su)
+ shift
+ u=$1
+ shift
+ exec gosu "$u" "${BASH_SOURCE[0]}" "$@"
+ ;;
+ --su-mysql)
+ shift
+ exec gosu mysql "${BASH_SOURCE[0]}" "$@"
+ ;;
+ --replication_*=*)
+ # Change the n to what is between _ and = and make lower case
+ n=${1#*_}
+ n=${n%%=*}
+ n=${n,,*}
+ # v is after the =
+ v=${1#*=}
+ repl[$n]=$v
+ _repl_param_check "$n"
+ ;;
+ --replication_*)
+ # Without =, look for a non --option next as the value,
+ # otherwise treat it as an "enable", just equate to 1.
+ # Clearing option is possible with "--replication_X="
+ n=${1#*_}
+ n=${n,,*}
+ if [ "${2:0:2}" == '--' ]; then
+ repl[$n]=1
+ else
+ repl[$n]=$2
+ shift
+ fi
+ _repl_param_check "$n"
+ ;;
+ --datadir=*)
+ datadir=${1#*=}
+ ;;
+ --datadir)
+ shift
+ datadir=${1}
+ ;;
+ --no-defaults)
+ unset def
+ nodefaults=1
+ ;;
+ --defaults-file=*|--defaults-extra-file=*|--defaults-group-suffix=*)
+ n=${1:11} # length --defaults-
+ n=${n%%=*}
+ n=${n//-/_}
+ # v is after the =
+ v=${1#*=}
+ def[$n]=$v
+ nodefaults=
+ ;;
+ --defaults-file|--defaults-extra-file|--defaults-group-suffix)
+ n=${1:11} # length --defaults-
+ n=${n//-/_}
+ if [ "${2:0:2}" == '--' ]; then
+ def[$n]=""
+ else
+ def[$n]=$2
+ shift
+ fi
+ nodefaults=
+ ;;
+ --*)
+ test=${1#--}
+ ;;
+ *)
+ echo "Unknown healthcheck option $1" >&2
+ exit 1
+ esac
+ if [ -n "$test" ]; then
+ if ! _test_exists "$test" ; then
+ echo "healthcheck unknown option or test '$test'" >&2
+ exit 1
+ elif ! "$test"; then
+ echo "healthcheck $test failed" >&2
+ exit 1
+ fi
+ test=
+ fi
+ shift
+done
\ No newline at end of file
diff --git a/unit-test-Docker-Image/my_conf.cnf b/unit-test-Docker-Image/my_conf.cnf
index ad36b9376f..dc23f6690a 100644
--- a/unit-test-Docker-Image/my_conf.cnf
+++ b/unit-test-Docker-Image/my_conf.cnf
@@ -31,3 +31,5 @@ default-storage-engine = rocksdb
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
+
+log_warnings = 1
\ No newline at end of file