diff options
author | Rob Daugherty <rd472p@att.com> | 2018-11-05 10:23:04 -0500 |
---|---|---|
committer | Rob Daugherty <rd472p@att.com> | 2018-11-05 10:33:13 -0500 |
commit | 95d22d7491ea365fdc4525e44d484c73c33e16a1 (patch) | |
tree | a5fdb7de3f14b345db760463cec8cee130b5b116 /mdbc-server/src/main/resources | |
parent | 8dca3aebe55502ab35402da6ec7123bd3de7694d (diff) |
Modularized mdbc build
The mdbc pom should inherit from oparent.
The top-level pom should not build the jar directly.
It should be a parent pom for mdbc submodules.
The first submodule will be called mdbc-server.
Note: the "mdbc" jar will now be called "mdbc-server".
Change-Id: I4456e659b7494641e5b3cefd540eb62a149b79a4
Issue-ID: MUSIC-175
Signed-off-by: Rob Daugherty <rd472p@att.com>
Diffstat (limited to 'mdbc-server/src/main/resources')
-rwxr-xr-x | mdbc-server/src/main/resources/META-INF/services/java.sql.Driver | 1 | ||||
-rwxr-xr-x | mdbc-server/src/main/resources/log4j.properties | 14 | ||||
-rw-r--r-- | mdbc-server/src/main/resources/logback.xml | 370 | ||||
-rwxr-xr-x | mdbc-server/src/main/resources/mdbc.properties | 12 | ||||
-rw-r--r-- | mdbc-server/src/main/resources/mdbc_driver.properties | 13 | ||||
-rw-r--r-- | mdbc-server/src/main/resources/music.properties | 8 | ||||
-rwxr-xr-x | mdbc-server/src/main/resources/tests.json | 163 |
7 files changed, 581 insertions, 0 deletions
diff --git a/mdbc-server/src/main/resources/META-INF/services/java.sql.Driver b/mdbc-server/src/main/resources/META-INF/services/java.sql.Driver new file mode 100755 index 0000000..a135284 --- /dev/null +++ b/mdbc-server/src/main/resources/META-INF/services/java.sql.Driver @@ -0,0 +1 @@ +org.onap.music.mdbc.ProxyDriver diff --git a/mdbc-server/src/main/resources/log4j.properties b/mdbc-server/src/main/resources/log4j.properties new file mode 100755 index 0000000..88ee415 --- /dev/null +++ b/mdbc-server/src/main/resources/log4j.properties @@ -0,0 +1,14 @@ +log4j.rootLogger=DEBUG, stdout + +# Direct log messages to stdout +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +#log4j.appender.filelog=org.apache.log4j.DailyRollingFileAppender +#log4j.appender.filelog.file=/tmp/log +#log4j.appender.filelog.datePattern='.'yyyyMMdd +#log4j.appender.filelog.append=true +#log4j.appender.filelog.layout=org.apache.log4j.PatternLayout +#log4j.appender.filelog.layout.ConversionPattern=%d %-5p [%t] - %m%n diff --git a/mdbc-server/src/main/resources/logback.xml b/mdbc-server/src/main/resources/logback.xml new file mode 100644 index 0000000..df02405 --- /dev/null +++ b/mdbc-server/src/main/resources/logback.xml @@ -0,0 +1,370 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + ============LICENSE_START========================================== + mdbc + =================================================================== + Copyright © 2017 AT&T Intellectual Property. All rights reserved. + =================================================================== + + Unless otherwise specified, all software contained herein is licensed + under the Apache License, Version 2.0 (the “License”); + you may not use this software except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + Unless otherwise specified, all documentation contained herein is licensed + under the Creative Commons License, Attribution 4.0 Intl. (the “License”); + you may not use this documentation except in compliance with the License. + You may obtain a copy of the License at + + https://creativecommons.org/licenses/by/4.0/ + + Unless required by applicable law or agreed to in writing, documentation + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + ============LICENSE_END============================================ + + + --> + +<configuration scan="true" scanPeriod="3 seconds" debug="true"> + <!-- + Logback files for the mdbc Driver "mdbc" + are created in directory ${catalina.base}/logs/mdbc; + e.g., apache-tomcat-8.0.35/logs/mdbc/application.log + --> + <!--<jmxConfigurator /> --> + + <!-- specify the component name --> + <property name="componentName" value="mdbc"></property> + + <!-- specify the base path of the log directory --> + <property name="logDirPrefix" value="${catalina.base}/logs"></property> + + <!-- The directories where logs are written --> + <property name="logDirectory" value="${logDirPrefix}/${componentName}" /> + <!-- Can easily relocate debug logs by modifying this path. --> + <property name="debugLogDirectory" value="${logDirPrefix}/${componentName}" /> + + <!-- log file names --> + <property name="generalLogName" value="application" /> + <property name="errorLogName" value="error" /> + <property name="metricsLogName" value="metrics" /> + <property name="auditLogName" value="audit" /> + <property name="debugLogName" value="debug" /> + <!-- + These loggers are not used in code (yet). + <property name="securityLogName" value="security" /> + <property name="policyLogName" value="policy" /> + <property name="performanceLogName" value="performance" /> + <property name="serverLogName" value="server" /> + --> + + <!-- 1610 Logging Fields Format Revisions --> + <property name="auditLoggerPattern" + value="%X{AuditLogBeginTimestamp}|%X{AuditLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" /> + + <property name="metricsLoggerPattern" + value="%X{MetricsLogBeginTimestamp}|%X{MetricsLogEndTimestamp}|%X{RequestId}|%X{ServiceInstanceId}|%thread|%X{VirtualServerName}|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{StatusCode}|%X{ResponseCode}|%X{ResponseDescription}|%X{InstanceUUID}|%.-5level|%X{AlertSeverity}|%X{ServerIPAddress}|%X{Timer}|%X{ServerFQDN}|%X{ClientIPAddress}|%X{ClassName}|%X{Unused}|%X{ProcessKey}|%X{TargetVisualEntity}|%X{CustomField1}|%X{CustomField2}|%X{CustomField3}|%X{CustomField4}| %msg%n" /> + + <property name="errorLoggerPattern" + value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ServiceName}|%X{PartnerName}|%X{TargetEntity}|%X{TargetServiceName}|%X{ClassName}|%X{AlertSeverity}|%X{ErrorCode}|%X{ErrorDescription}| %msg%n" /> + + <property name="defaultLoggerPattern" + value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%X{ClassName}| %msg%n" /> + + <!-- use %class so library logging calls yield their class name --> + <property name="applicationLoggerPattern" + value="%date{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}|%X{RequestId}|%thread|%class{36}| %msg%n" /> + + <!-- Example evaluator filter applied against console appender --> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${defaultLoggerPattern}</pattern> + </encoder> + </appender> + + <!-- ============================================================================ --> + <!-- EELF Appenders --> + <!-- ============================================================================ --> + + <!-- The EELFAppender is used to record events to the general application + log --> + + + <appender name="EELF" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${generalLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- daily rollover --> + <fileNamePattern>${logDirectory}/${generalLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> + + <!-- keep 30 days' worth of history capped at 3GB total size --> + <maxHistory>30</maxHistory> + <totalSizeCap>3GB</totalSizeCap> + + </rollingPolicy> + <encoder> + <pattern>${applicationLoggerPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELF" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <!-- Class name is part of caller data --> + <includeCallerData>true</includeCallerData> + <appender-ref ref="EELF" /> + </appender> + + <!-- EELF Security Appender. This appender is used to record security events + to the security log file. Security events are separate from other loggers + in EELF so that security log records can be captured and managed in a secure + way separate from the other logs. This appender is set to never discard any + events. --> + <!-- + <appender name="EELFSecurity" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${securityLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/${securityLogName}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${defaultPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFSecurity" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <discardingThreshold>0</discardingThreshold> + <appender-ref ref="EELFSecurity" /> + </appender> + --> + + <!-- EELF Performance Appender. This appender is used to record performance + records. --> + <!-- + <appender name="EELFPerformance" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${performanceLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/${performanceLogName}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <outputPatternAsHeader>true</outputPatternAsHeader> + <pattern>${defaultPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFPerformance" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFPerformance" /> + </appender> + --> + + <!-- EELF Server Appender. This appender is used to record Server related + logging events. The Server logger and appender are specializations of the + EELF application root logger and appender. This can be used to segregate Server + events from other components, or it can be eliminated to record these events + as part of the application root log. --> + <!-- + <appender name="EELFServer" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${serverLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/${serverLogName}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${defaultPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFServer" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFServer" /> + </appender> + --> + + <!-- EELF Policy Appender. This appender is used to record Policy engine + related logging events. The Policy logger and appender are specializations + of the EELF application root logger and appender. This can be used to segregate + Policy engine events from other components, or it can be eliminated to record + these events as part of the application root log. --> + <!-- + <appender name="EELFPolicy" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${policyLogName}.log</file> + <rollingPolicy + class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${logDirectory}/${policyLogName}.%i.log.zip + </fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>9</maxIndex> + </rollingPolicy> + <triggeringPolicy + class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>5MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>${defaultPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFPolicy" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFPolicy" /> + </appender> + --> + + <!-- EELF Audit Appender. This appender is used to record audit engine + related logging events. The audit logger and appender are specializations + of the EELF application root logger and appender. This can be used to segregate + Policy engine events from other components, or it can be eliminated to record + these events as part of the application root log. --> + + <appender name="EELFAudit" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${auditLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- daily rollover --> + <fileNamePattern>${logDirectory}/${auditLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> + + <!-- keep 30 days' worth of history capped at 3GB total size --> + <maxHistory>30</maxHistory> + <totalSizeCap>3GB</totalSizeCap> + + </rollingPolicy> + <encoder> + <pattern>${auditLoggerPattern}</pattern> + </encoder> + </appender> + <appender name="asyncEELFAudit" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFAudit" /> + </appender> + + <appender name="EELFMetrics" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${metricsLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- daily rollover --> + <fileNamePattern>${logDirectory}/${metricsLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> + + <!-- keep 30 days' worth of history capped at 3GB total size --> + <maxHistory>30</maxHistory> + <totalSizeCap>3GB</totalSizeCap> + + </rollingPolicy> + <encoder> + <pattern>${metricsLoggerPattern}</pattern> + </encoder> + </appender> + + + <appender name="asyncEELFMetrics" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFMetrics"/> + </appender> + + <appender name="EELFError" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${logDirectory}/${errorLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- daily rollover --> + <fileNamePattern>${logDirectory}/${errorLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> + + <!-- keep 30 days' worth of history capped at 3GB total size --> + <maxHistory>30</maxHistory> + <totalSizeCap>3GB</totalSizeCap> + + </rollingPolicy> + <encoder> + <pattern>${errorLoggerPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFError" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFError"/> + </appender> + + <appender name="EELFDebug" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${debugLogDirectory}/${debugLogName}.log</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <!-- daily rollover --> + <fileNamePattern>${logDirectory}/${debugLogName}.%d{yyyy-MM-dd}.log.zip</fileNamePattern> + + <!-- keep 30 days' worth of history capped at 3GB total size --> + <maxHistory>30</maxHistory> + <totalSizeCap>3GB</totalSizeCap> + + </rollingPolicy> + <encoder> + <pattern>${defaultLoggerPattern}</pattern> + </encoder> + </appender> + + <appender name="asyncEELFDebug" class="ch.qos.logback.classic.AsyncAppender"> + <queueSize>256</queueSize> + <appender-ref ref="EELFDebug" /> + </appender> + + + + + <logger name="com.att.eelf" level="info" additivity="false"> + <appender-ref ref="asyncEELF" /> + </logger> + + <logger name="com.att.eelf" level="info" additivity="false"> + <appender-ref ref="asyncEELFAudit" /> + </logger> + + <logger name="com.att.eelf" level="debug" additivity="false"> + <appender-ref ref="asyncEELFDebug" /> + </logger> + + <logger name="com.att.eelf.error" level="info" additivity="false"> + <appender-ref ref="asyncEELFError" /> + </logger> + + <logger name="com.att.eelf.metrics" level="info" additivity="false"> + <appender-ref ref="asyncEELFMetrics" /> + </logger> + + <root level="DEBUG"> + <appender-ref ref="asyncEELF" /> + </root> + +</configuration> diff --git a/mdbc-server/src/main/resources/mdbc.properties b/mdbc-server/src/main/resources/mdbc.properties new file mode 100755 index 0000000..3e207aa --- /dev/null +++ b/mdbc-server/src/main/resources/mdbc.properties @@ -0,0 +1,12 @@ +# +# A list of all Mixins that should be checked by MDBC +# +MIXINS= \ + org.onap.music.mdbc.mixins.H2Mixin \ + org.onap.music.mdbc.mixins.H2ServerMixin \ + org.onap.music.mdbc.mixins.MySQLMixin \ + org.onap.music.mdbc.mixins.CassandraMixin \ + org.onap.music.mdbc.mixins.Cassandra2Mixin + +critical.tables= \ + TEST
\ No newline at end of file diff --git a/mdbc-server/src/main/resources/mdbc_driver.properties b/mdbc-server/src/main/resources/mdbc_driver.properties new file mode 100644 index 0000000..487feb3 --- /dev/null +++ b/mdbc-server/src/main/resources/mdbc_driver.properties @@ -0,0 +1,13 @@ +# +# A list of all Mixins that should be checked by MDBC +# +MIXINS= \ + org.onap.music.mdbc.mixins.H2Mixin \ + org.onap.music.mdbc.mixins.H2ServerMixin \ + org.onap.music.mdbc.mixins.MySQLMixin \ + org.onap.music.mdbc.mixins.CassandraMixin \ + org.onap.music.mdbc.mixins.Cassandra2Mixin + +DEFAULT_DRIVERS=\ + org.h2.Driver \ + com.mysql.jdbc.Driver
\ No newline at end of file diff --git a/mdbc-server/src/main/resources/music.properties b/mdbc-server/src/main/resources/music.properties new file mode 100644 index 0000000..204e3f6 --- /dev/null +++ b/mdbc-server/src/main/resources/music.properties @@ -0,0 +1,8 @@ +cassandra.host =\ + 143.215.128.49 +cassandra.user =\ + cassandra +cassandra.password =\ + cassandra +zookeeper.host =\ + localhost
\ No newline at end of file diff --git a/mdbc-server/src/main/resources/tests.json b/mdbc-server/src/main/resources/tests.json new file mode 100755 index 0000000..8df9f34 --- /dev/null +++ b/mdbc-server/src/main/resources/tests.json @@ -0,0 +1,163 @@ +{ + "tests": [ + "org.onap.music.mdbc.tests.Test_Insert", + "org.onap.music.mdbc.tests.Test_Delete", + "org.onap.music.mdbc.tests.Test_Transactions" + ], + "configs": [ + { + "description": "H2 with Cassandra with two connections", + "MDBC_DB_MIXIN": "h2", + "MDBC_MUSIC_MIXIN": "cassandra", + "replicas": "0,1", + "music_keyspace": "mdbctest1", + "music_address": "localhost", + "music_rfactor": "1", + "connections": [ + { + "name": "Connection 0", + "url": "jdbc:mdbc:mem:db0", + "user": "", + "password": "", + "myid": "0" + }, + { + "name": "Connection 1", + "url": "jdbc:mdbc:mem:db1", + "user": "", + "password": "", + "myid": "1" + } + ] + }, + { + "description": "H2 with Cassandra2 with three connections", + "MDBC_DB_MIXIN": "h2", + "MDBC_MUSIC_MIXIN": "cassandra2", + "replicas": "0,1,2", + "music_keyspace": "mdbctest2", + "music_address": "localhost", + "music_rfactor": "1", + "user": "", + "password": "", + "connections": [ + { + "name": "Connection 0", + "url": "jdbc:mdbc:mem:db0", + "myid": "0" + }, + { + "name": "Connection 1", + "url": "jdbc:mdbc:mem:db1", + "myid": "1" + }, + { + "name": "Connection 2", + "url": "jdbc:mdbc:mem:db2", + "myid": "2" + } + ] + }, + { + "description": "H2 Server with Cassandra2 with two connections", + "MDBC_DB_MIXIN": "h2server", + "MDBC_MUSIC_MIXIN": "cassandra2", + "replicas": "0,1", + "music_keyspace": "mdbctest3", + "music_address": "localhost", + "music_rfactor": "1", + "connections": [ + { + "name": "Connection 0", + "url": "jdbc:mdbc:tcp://localhost/mdbc0", + "user": "", + "password": "", + "myid": "0" + }, + { + "name": "Connection 1", + "url": "jdbc:mdbc:tcp://localhost/mdbc1", + "user": "", + "password": "", + "myid": "1" + } + ] + }, + { + "description": "MySQL with Cassandra2 with two connections", + "MDBC_DB_MIXIN": "mysql", + "MDBC_MUSIC_MIXIN": "cassandra2", + "replicas": "0,1,2", + "music_keyspace": "mdbctest4", + "music_address": "localhost", + "music_rfactor": "1", + "user": "root", + "password": "abc123", + "connections": [ + { + "name": "Connection 0", + "url": "jdbc:mdbc://127.0.0.1:3306/mdbc", + "myid": "0" + }, + { + "name": "Connection 1", + "url": "jdbc:mdbc://127.0.0.1:3306/mdbc2", + "myid": "1" + } + ] + }, + { + "description": "H2 (DB #1) and MySQL (DB #2) with Cassandra2", + "MDBC_MUSIC_MIXIN": "cassandra2", + "replicas": "0,1", + "music_keyspace": "mdbctest5", + "music_address": "localhost", + "music_rfactor": "1", + "connections": [ + { + "name": "Connection 0", + "MDBC_DB_MIXIN": "h2", + "url": "jdbc:mdbc:mem:db9", + "user": "", + "password": "", + "myid": "0" + }, + { + "name": "Connection 1", + "MDBC_DB_MIXIN": "mysql", + "url": "jdbc:mdbc://127.0.0.1:3306/mdbc3", + "user": "root", + "password": "abc123", + "myid": "1" + } + ] + } + ], + "zconfigs": [ + { + "description": "H2 Server with Cassandra2 with two connections", + "MDBC_DB_MIXIN": "h2server", + "MDBC_MUSIC_MIXIN": "cassandra2", + "replicas": "0,1", + "music_keyspace": "mdbctest3", + "music_address": "localhost", + "music_rfactor": "1", + "connections": [ + { + "name": "Connection 0", + "url": "jdbc:mdbc:tcp://localhost/mdbc0", + "user": "", + "password": "", + "myid": "0" + }, + { + "name": "Connection 1", + "url": "jdbc:mdbc:tcp://localhost/mdbc1", + "user": "", + "password": "", + "myid": "1" + } + ] + } + ] +} |