@samtec-ash/virtuintestcomm

0.9.8 • Public • Published

Virtuin Logo Virtuin Test Comm

Overview

Virtuin Test Comm. provides utilities for broadcasting, direct, etc communication over RabbitMQ.
The following classes are provided:

  • VirtuinTestPublisher: Used by active running test to update status and results to subscribers.

  • VirtuinTestSubscriber: Used by any process wanting to receive test status/result updates.

  • VirtuinTestViewClient: Used by test view (e.g. web-server) to send requests to test view server.

  • VirtuinTestViewServer: Used primarily by active test to listen for view requests.

  • VirtuinTestDispatcher: Used by Virtuin GUI to dispatch tests to a test environment server.

  • VirtuinTestHandler: Used within test environment to handle receiving test start/stop/status/clear requests.
    Not recommended to be used alone. Instead use VirtuinTestServer.

Build

yarn run prepublish

Installation

yarn add @samtec-ash/virtuintestcomm

Examples

VirtuinTestPublisher
import {
  VirtuinTestPublisher
} from '@samtec-hub/virtuintestcomm';

publisher = new VirtuinTestPublisher(
  'DebugStation',
  'DebugTest',
  'DebugUUID'
);

await publisher.open('localhost');
publisher.updateStatus(
  state='STARTING',
  progress=0
);
await publisher.publish(
  message='Just warming up.',
  error=undefined,
  customDict={a=1}
);
publisher.updateStatus(
  state='FINISHED',
  progress=100
);
await publisher.publish(
  message='All done.',
  error=undefined,
  results=[{type='scalar', name='Temp', unit='C', value='28'}],
  customDict={a=2}
);
await publisher.close();
VirtuinTestSubscriber
import {
  VirtuinTestSubscriber
} from '@samtec-hub/virtuintestcomm';

subscriber = new VirtuinTestSubscriber('DebugStation');
await subscriber.open('localhost');
let subscribeTag;
const subscribeCB = async (err, data) => {
  if (err) {
    console.log(`Received error ${err}`);
  } else if (data) {
    if (data.state === 'STARTED') {
      console.log('Test started');
    } else if (data.progress === 100 || data.state === 'FINISHED') {
      console.log('Test finished');
      await subscriber.unsubscribe(subscribeTag);
      await subscriber.close();
    }
  }  
};
subscribeTag = await subscriber.subscribe(subscribeCB);
VirtuinTestViewServer
import {
  VirtuinTestViewServer
} from '@samtec-hub/virtuintestcomm';

viewServer = new VirtuinTestViewServer('DebugStation', 'DebugTest');
await viewServer.open('localhost');

let listenTag;
const listenCB = async (err, data) => {
  if (err) {
    console.log(`Received error ${err}`);
  } else if (data) {
    if (typeof data.operation === 'string') {
      switch(data.operation.toUpperCase()) {
        case 'FOO': {
          console.log('Doing FOO');
          return { success: true, operation: 'FOO' };
        }
        case 'BAR': {
          console.log('Doing BAR');
          return { success: true, operation: 'BAR' };
        }
        case 'EXIT': {          
          setTimeout(() => { viewServer.close(); }, 500);
          return { success: true, operation: 'EXIT' };
        }
        default: {
          console.log('Operation unknown');
          return { success: false };
        }
      }
    }
  }  
};
listenTag = await viewServer.listen(listenCB);
VirtuinTestViewClient
import {
  VirtuinTestViewClient
} from '@samtec-hub/virtuintestcomm';

viewClient = new VirtuinTestViewClient('DebugStation', 'DebugTest');
await viewClient.open('localhost');
viewClient.write({ operation: 'FOO' });
viewClient.close();

API

API HTML
API MD

Readme

Keywords

Package Sidebar

Install

npm i @samtec-ash/virtuintestcomm

Weekly Downloads

0

Version

0.9.8

License

MIT

Unpacked Size

92.6 kB

Total Files

21

Last publish

Collaborators

  • nelson_a_penn_samtec
  • julianlechner
  • nathanpage
  • adamtec
  • virtchris