|
@@ -0,0 +1,104 @@
|
|
|
|
+import { Observable, map, Subject, takeUntil, take } from "rxjs";
|
|
|
|
+import { BaseMessage } from "../dependencies/fisappmessagejsutilty/dependencies/dependencies";
|
|
|
|
+import { LogSetting } from "../dependencies/fisloggingservice/type/datatype";
|
|
|
|
+import { AcknowledgementService } from "../services/acknowledgement.service";
|
|
|
|
+import { IncomingMessageService } from "../services/incomingMessage.service";
|
|
|
|
+import { MessageSyncrhonizationService } from "../services/synchronization.service";
|
|
|
|
+import { MessageSynchronisationServiceSetting } from "../type/datatype";
|
|
|
|
+import { StreamingService } from "./test-streamOBS";
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+/* Pre - Defined Data && Settings */
|
|
|
|
+const stream = new StreamingService()
|
|
|
|
+// Declare source Services && Observables (Using File Storage) Simulating Full Logs
|
|
|
|
+const source_synchronize = new MessageSyncrhonizationService()
|
|
|
|
+const source_payload: Observable<BaseMessage> = stream.stream()
|
|
|
|
+const source_incoming = new IncomingMessageService()
|
|
|
|
+const source_acknowledge = new AcknowledgementService()
|
|
|
|
+const source_payload_string = source_payload.pipe(
|
|
|
|
+ map((data) => {
|
|
|
|
+ return JSON.stringify(data);
|
|
|
|
+ })
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+// Declare target Services && Observables (Using MongoDB Storage) Simlluating Partial Logs
|
|
|
|
+const target_payload: Observable<BaseMessage> = stream.stream().pipe(take(2))
|
|
|
|
+const target_incoming = new IncomingMessageService()
|
|
|
|
+const target_syncrhonize = new MessageSyncrhonizationService()
|
|
|
|
+const target_acknowledge = new AcknowledgementService()
|
|
|
|
+const target_payload_string = target_payload.pipe(
|
|
|
|
+ map((data) => {
|
|
|
|
+ return JSON.stringify(data);
|
|
|
|
+ }),
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+// Decalre Source Storage
|
|
|
|
+let source_storage: LogSetting = {
|
|
|
|
+ storage: "File",
|
|
|
|
+ setting: {
|
|
|
|
+ appName: 'Default from client',
|
|
|
|
+ appLocName: 'To be generated in client',
|
|
|
|
+ logLocName: 'To be generated in client',
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+let source_dataSet: LogSetting & { incomingObservable: Observable<BaseMessage> } = {
|
|
|
|
+ storage: source_storage.storage,
|
|
|
|
+ setting: source_storage.setting,
|
|
|
|
+ customSetting: source_storage.customSetting,
|
|
|
|
+ incomingObservable: source_payload
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//Declare Target Storage
|
|
|
|
+let target_storage: LogSetting = {
|
|
|
|
+ storage: "MongoDB",
|
|
|
|
+ setting: {
|
|
|
|
+ appName: 'Default from client',
|
|
|
|
+ appLocName: 'To be generated in client',
|
|
|
|
+ logLocName: 'To be generated in client',
|
|
|
|
+ },
|
|
|
|
+ customSetting: {
|
|
|
|
+ srv: true,
|
|
|
|
+ user: "testDB",
|
|
|
|
+ password: "h1nt1OyXw6QeUnzS",
|
|
|
|
+ server: "cluster0.29sklte.mongodb.net",
|
|
|
|
+ collection: "log",
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+let target_dataSet: LogSetting & { incomingObservable: Observable<BaseMessage> } = {
|
|
|
|
+ storage: target_storage.storage,
|
|
|
|
+ setting: target_storage.setting,
|
|
|
|
+ customSetting: target_storage.customSetting,
|
|
|
|
+ incomingObservable: target_payload
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// Combine source and target storage to form MessageSynchronisationServiceSetting
|
|
|
|
+let settings: MessageSynchronisationServiceSetting = {
|
|
|
|
+ incomingSource: {
|
|
|
|
+ //all of the settings to be combined here
|
|
|
|
+ ...source_storage,
|
|
|
|
+ tags: ['Incoming']
|
|
|
|
+ }, //LogSetting & {tags:string[] },
|
|
|
|
+ target: {
|
|
|
|
+ ...target_storage,
|
|
|
|
+ tags: ['Incoming']
|
|
|
|
+ } //LogSetting & {tags:string[] }
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/* -------- SYNCHRONIZATION --------- */
|
|
|
|
+source_incoming.init(source_dataSet)
|
|
|
|
+target_incoming.init(target_dataSet)
|
|
|
|
+
|
|
|
|
+/* Type 1 synchronization */
|
|
|
|
+source_synchronize.init(settings).then(() => {
|
|
|
|
+ source_synchronize.subscribe(source_payload_string)
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+// let sychnedObs = source_synchronize.subscribe(source_payload_string)
|
|
|
|
+// sychnedObs.subscribe(
|
|
|
|
+// {
|
|
|
|
+// next: (data) => {
|
|
|
|
+// target_payload.next(data)
|
|
|
|
+// }
|
|
|
|
+// }
|
|
|
|
+// )
|