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 [...]

Reply via email to