This is an automated email from the ASF dual-hosted git repository.
jianglongtao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 1d62d3f624f Base64 the metadata export result (#25691)
1d62d3f624f is described below
commit 1d62d3f624f1e20eda6b15e227600deb06400b6a
Author: ChenJiaHao <[email protected]>
AuthorDate: Tue May 16 13:17:34 2023 +0800
Base64 the metadata export result (#25691)
* Base64 the metadata export result
* Add license check skip suffix
---
.licenserc.yaml | 1 +
.../handler/distsql/ral/queryable/ExportMetaDataExecutor.java | 3 ++-
.../handler/distsql/ral/updatable/ImportMetaDataUpdater.java | 6 +++---
.../distsql/ral/queryable/ExportMetaDataExecutorTest.java | 9 +++++----
.../handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java | 8 ++++----
.../core/src/test/resources/conf/import/empty-metadata.data | 1 +
.../core/src/test/resources/conf/import/empty-metadata.json | 1 -
.../test/resources/expected/export-metadata-configuration.data | 1 +
.../test/resources/expected/export-metadata-configuration.json | 1 -
9 files changed, 17 insertions(+), 14 deletions(-)
diff --git a/.licenserc.yaml b/.licenserc.yaml
index 6c3de9e5dce..a532525adaf 100644
--- a/.licenserc.yaml
+++ b/.licenserc.yaml
@@ -29,6 +29,7 @@ header:
- 'docs/**'
- '**/*.md'
- '**/*.json'
+ - '**/*.data'
- '**/*.iml'
- '**/*.ini'
- 'LICENSE'
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
index 36e4fad3b59..8153d5508ed 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
+import org.apache.commons.codec.binary.Base64;
import
org.apache.shardingsphere.distsql.handler.ral.query.MetaDataRequiredQueryableRALExecutor;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ExportMetaDataStatement;
import org.apache.shardingsphere.globalclock.core.provider.GlobalClockProvider;
@@ -77,7 +78,7 @@ public final class ExportMetaDataExecutor implements
MetaDataRequiredQueryableRA
ExportedClusterInfo exportedClusterInfo = new ExportedClusterInfo();
exportedClusterInfo.setMetaData(exportedMetaData);
generateSnapshotInfo(metaData, exportedClusterInfo);
- return JsonUtils.toJsonString(exportedClusterInfo);
+ return
Base64.encodeBase64String(JsonUtils.toJsonString(exportedClusterInfo).getBytes());
}
private Map<String, String> getDatabases(final ProxyContext proxyContext) {
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
index 4a9519db635..67f3592f94b 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdater.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.updatable;
+import org.apache.commons.codec.binary.Base64;
import org.apache.commons.io.FileUtils;
import org.apache.shardingsphere.distsql.handler.ral.update.RALUpdater;
import
org.apache.shardingsphere.distsql.parser.statement.ral.updatable.ImportMetaDataStatement;
@@ -54,18 +55,17 @@ public final class ImportMetaDataUpdater implements
RALUpdater<ImportMetaDataSta
if (sqlStatement.getFilePath().isPresent()) {
File file = new File(sqlStatement.getFilePath().get());
try {
- jsonMetaDataConfig = FileUtils.readFileToString(file,
Charset.defaultCharset());
+ jsonMetaDataConfig = new
String(Base64.decodeBase64(FileUtils.readFileToString(file,
Charset.defaultCharset())));
} catch (final IOException ex) {
throw new FileIOException(ex);
}
} else {
- jsonMetaDataConfig = sqlStatement.getMetaDataValue();
+ jsonMetaDataConfig = new
String(Base64.decodeBase64(sqlStatement.getMetaDataValue()));
}
ExportedClusterInfo exportedClusterInfo =
JsonUtils.readValue(jsonMetaDataConfig, ExportedClusterInfo.class);
ExportedMetaData exportedMetaData = exportedClusterInfo.getMetaData();
importServerConfig(exportedMetaData);
importDatabase(exportedMetaData);
- // TODO restore snapshot info
}
private void importServerConfig(final ExportedMetaData exportedMetaData) {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
index c31ab193c6d..1d0ccf36b6d 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ExportMetaDataExecutorTest.java
@@ -73,6 +73,9 @@ import static org.mockito.Mockito.when;
@StaticMockSettings(ProxyContext.class)
class ExportMetaDataExecutorTest {
+ private static final String METADATA_VALUE_EXPECTED =
"eyJtZXRhX2RhdGEiOnsiZGF0YWJhc2VzIjp7ImVtcHR5X21ldGFkYXRhIjoiZGF0YWJhc2VOYW1lOiBudWxsXG5kYXRhU291cmNlczpcbn"
+ +
"J1bGVzOlxuIn0sInByb3BzIjoiIiwicnVsZXMiOiJydWxlczpcbi0gIUdMT0JBTF9DTE9DS1xuICBlbmFibGVkOiBmYWxzZVxuICBwcm92aWRlcjogbG9jYWxcbiAgdHlwZTogVFNPXG4ifX0=";
+
private final ShardingSphereDatabase database =
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
@Test
@@ -98,9 +101,7 @@ class ExportMetaDataExecutorTest {
Collection<LocalDataQueryResultRow> actual = new
ExportMetaDataExecutor().getRows(contextManager.getMetaDataContexts().getMetaData(),
sqlStatement);
assertThat(actual.size(), is(1));
LocalDataQueryResultRow row = actual.iterator().next();
- assertThat(row.getCell(3),
-
is("{\"meta_data\":{\"databases\":{\"empty_metadata\":\"databaseName:
null\\ndataSources:\\nrules:\\n\"},"
- + "\"props\":\"\",\"rules\":\"rules:\\n-
!GLOBAL_CLOCK\\n enabled: false\\n provider: local\\n type: TSO\\n\"}}"));
+ assertThat(row.getCell(3), is(METADATA_VALUE_EXPECTED));
}
private ContextManager mockEmptyContextManager() {
@@ -164,7 +165,7 @@ class ExportMetaDataExecutorTest {
@SneakyThrows(IOException.class)
private String loadExpectedRow() {
StringBuilder result = new StringBuilder();
- String fileName =
Objects.requireNonNull(ExportMetaDataExecutorTest.class.getResource("/expected/export-metadata-configuration.json")).getFile();
+ String fileName =
Objects.requireNonNull(ExportMetaDataExecutorTest.class.getResource("/expected/export-metadata-configuration.data")).getFile();
try (
FileReader fileReader = new FileReader(fileName);
BufferedReader reader = new BufferedReader(fileReader)) {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
index b86c4a5d79e..cb5d0c1e722 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/updatable/ImportMetaDataUpdaterTest.java
@@ -59,9 +59,9 @@ import static org.mockito.Mockito.when;
@MockitoSettings(strictness = Strictness.LENIENT)
class ImportMetaDataUpdaterTest {
- private static final String METADATA_VALUE =
"{\"meta_data\":{\"databases\":{\"sharding_db\":\"databaseName:
sharding_db\\ndataSources:\\nrules:\\n\"},"
- + "\"props\":\"props:\\n system-log-level: INFO\\n sql-show:
false\\n\","
- + "\"rules\":\"rules:\\n- !AUTHORITY\\n privilege:\\n type:
ALL_PERMITTED\\n users:\\n - authenticationMethodName: ''\\n password:
root\\n user: root@%\\n\"}}";
+ private static final String METADATA_VALUE =
"eyJtZXRhX2RhdGEiOnsiZGF0YWJhc2VzIjp7InNoYXJkaW5nX2RiIjoiZGF0YWJhc2VOYW1lOiBzaGFyZGluZ19kYlxuZGF0YVNvdXJjZXM6XG5ydWxlczpcbiJ9LCJwcm9w"
+ +
"cyI6InByb3BzOlxuICBzeXN0ZW0tbG9nLWxldmVsOiBJTkZPXG4gIHNxbC1zaG93OiBmYWxzZVxuIiwicnVsZXMiOiJydWxlczpcbi0gIUFVVEhPUklUWVxuICBwcml2aWxlZ2U6XG4gICAgdHlwZTogQUxMX1BFUk1JVFRFR"
+ +
"FxuICB1c2VyczpcbiAgLSBhdXRoZW50aWNhdGlvbk1ldGhvZE5hbWU6ICcnXG4gICAgcGFzc3dvcmQ6IHJvb3RcbiAgICB1c2VyOiByb290QCVcbiJ9fQ==";
private static final String EMPTY = "empty_metadata";
@@ -71,7 +71,7 @@ class ImportMetaDataUpdaterTest {
@BeforeEach
void setup() {
- featureMap.put(EMPTY, "/conf/import/empty-metadata.json");
+ featureMap.put(EMPTY, "/conf/import/empty-metadata.data");
}
@Test
diff --git
a/proxy/backend/core/src/test/resources/conf/import/empty-metadata.data
b/proxy/backend/core/src/test/resources/conf/import/empty-metadata.data
new file mode 100644
index 00000000000..e4184a20f34
--- /dev/null
+++ b/proxy/backend/core/src/test/resources/conf/import/empty-metadata.data
@@ -0,0 +1 @@
+eyJtZXRhX2RhdGEiOnsiZGF0YWJhc2VzIjp7ImVtcHR5X21ldGFkYXRhIjoiZGF0YWJhc2VOYW1lOiBlbXB0eV9tZXRhZGF0YVxuIn0sInByb3BzIjoiIiwicnVsZXMiOiIifX0=
diff --git
a/proxy/backend/core/src/test/resources/conf/import/empty-metadata.json
b/proxy/backend/core/src/test/resources/conf/import/empty-metadata.json
deleted file mode 100644
index ede5beb0d9a..00000000000
--- a/proxy/backend/core/src/test/resources/conf/import/empty-metadata.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta_data":{"databases":{"empty_metadata":"databaseName:
empty_metadata\n"},"props":"","rules":""}}
diff --git
a/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.data
b/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.data
new file mode 100644
index 00000000000..21f561599b5
--- /dev/null
+++
b/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.data
@@ -0,0 +1 @@
+eyJtZXRhX2RhdGEiOnsiZGF0YWJhc2VzIjp7Im5vcm1hbF9kYiI6ImRhdGFiYXNlTmFtZTogbm9ybWFsX2RiXG5kYXRhU291cmNlczpcbiAgZHNfMDpcbiAgICBwYXNzd29yZDogXG4gICAgdXJsOiBqZGJjOm9wZW5nYXVzczovLzEyNy4wLjAuMTo1NDMyL2RlbW9fZHNfMFxuICAgIHVzZXJuYW1lOiByb290XG4gICAgbWluUG9vbFNpemU6IDFcbiAgICBtYXhQb29sU2l6ZTogNTBcbiAgZHNfMTpcbiAgICBwYXNzd29yZDogXG4gICAgdXJsOiBqZGJjOm9wZW5nYXVzczovLzEyNy4wLjAuMTo1NDMyL2RlbW9fZHNfMVxuICAgIHVzZXJuYW1lOiByb290XG4gICAgbWluUG9vbFNpemU6IDFcbiAgICBtYXhQb29sU2l6ZTogNTBcbiJ9LCJwcm9wcyI6InBy
[...]
diff --git
a/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.json
b/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.json
deleted file mode 100644
index 3233fe24af6..00000000000
---
a/proxy/backend/core/src/test/resources/expected/export-metadata-configuration.json
+++ /dev/null
@@ -1 +0,0 @@
-{"meta_data":{"databases":{"normal_db":"databaseName:
normal_db\ndataSources:\n ds_0:\n password: \n url:
jdbc:opengauss://127.0.0.1:5432/demo_ds_0\n username: root\n minPoolSize:
1\n maxPoolSize: 50\n ds_1:\n password: \n url:
jdbc:opengauss://127.0.0.1:5432/demo_ds_1\n username: root\n minPoolSize:
1\n maxPoolSize: 50\n"},"props":"props:\n sql-show:
true\n","rules":"rules:\n- !AUTHORITY\n privilege:\n type: ALL_PERMITTED\n
users:\n - authenticatio [...]