interfaces-diskspace-validation

Downloads14
Subscribe
1
Bookmark
1
This application is not supported by InterSystems Corporation. Please be notified that you use it at your own responsibility.
Details
Releases
Reviews
Issues

What's new in this version

Supports InterSystems IRIS and ZPM; New Generic UnitTest

objectscript-package-template

T# Ensemble-Interface-DiskSpace-Test A framework to test for disk space consumption for Ensemble interfaces.

It has a dual purpose - To aid in estimating the required disk space interfaces will consume (both database file growth and journal files) As well as verifying the Ensemble Purge mechanism will indeed clean out all the interfaces' related data

See class reference (specifically of the InterfaceDiskSpace.Main class) for documentation and usage guidelines

Here is a sample Output - You can see for example it points out an issue with certain persistent entities referenced by Web Service responses that are not deleted by default by the Purge process.

ENSEMBLE>write ##class(InterfaceDiskSpace.Main).PreTestRun(.runId)

Stopping Production...

17:17:30.986:Ens.Director: StopProduction initiated.
17:17:30.986:Ens.Job: System is quiescent
17:17:30.986:Ens.Job: Requesting all jobs to terminate ...
17:17:31.005:Ens.Director: Production 'Test.WSTimeouts.Production' stopped.
Cleaning Production...
Confirm cleaning data <y/n>?
y
Purging...

Purged:
deleteCounts=""
deleteCounts("Bitmap Chunks")=0
deleteCounts("Business Processes")=0
deleteCounts("Business Rule Logs")=0
deleteCounts("Ensemble Messages")=0
deleteCounts("Event Logs")=11
deleteCounts("Host Monitor Data")=31
deleteCounts("I/O Logs")=0
deleteCounts("Managed Alerts")=0
deleteCounts("Message Bodies")=0

Switching Journal...
Capturing data...
1
ENSEMBLE>write ##class(InterfaceDiskSpace.Main).TestSummary(runId)
1
ENSEMBLE>write ##class(InterfaceDiskSpace.Main).PurgeTest(runId,1)

Purged:
deleteCounts=""
deleteCounts("Bitmap Chunks")=0
deleteCounts("Business Processes")=0
deleteCounts("Business Rule Logs")=0
deleteCounts("Ensemble Messages")=102
deleteCounts("Event Logs")=33
deleteCounts("Host Monitor Data")=9
deleteCounts("I/O Logs")=0
deleteCounts("Managed Alerts")=0
deleteCounts("Message Bodies")=101

1
ENSEMBLE>write ##class(InterfaceDiskSpace.Main).Report(runId)

Data Usage Report

Database file size used: 1
Journal file size used: 0
Journal space used: 325108

Globals growth

Ens.MessageBodyD .007
Ens.MessageHeaderD .02
Ens.MessageHeaderI .003
Ens.Util.LogD .004
ITest.Proxy.s0.AddressD ITest.Proxy.s0.Address.cls .004
ITest.Proxy.s0.PersonD ITest.Proxy.s0.Person.cls .003

Journal Profile

Ens.ActiveMessage 26184
Ens.BusinessProcessD 3308
Ens.BusinessProcessI 1456
Ens.Configuration 424
Ens.JobRequest 132
Ens.JobStatus 112
Ens.MessageBodyD 19508
Ens.MessageHeaderD 34624
Ens.MessageHeaderI 89540
Ens.Queue 37996
Ens.Runtime 50920
Ens.Suspended 100
Ens.Util.LogD 10404
Ens.Util.LogI 12248
ITest.Proxy.s0.AddressD ITest.Proxy.s0.Address.cls 16096
ITest.Proxy.s0.PersonD ITest.Proxy.s0.Person.cls 8624

Globals remaining after purge

ITest.Proxy.s0.AddressD ITest.Proxy.s0.Address.cls .004
ITest.Proxy.s0.PersonD ITest.Proxy.s0.Person.cls .003
1

Installation

Clone/git pull the repo into any local directory

Or using ZPM

IRISAPP>zpm

zpm: IRISAPP> install interfaces-diskspace-validation

How to Test it

See sample above, also see ClassDoc of Main class, Specifically see this example -

IRISAPP>Do ##class(InterfaceDiskSpace.Main).RunFullFlow("P" /* Clean Option - Purge*/,"" /* Mask not Kill */, "E" /* Prompt before clean level - Each */, "" /* User clean class */, "" /* User clean method */, 1 /* Stop Production */, 1 /* Clean Production */, 1 /* Verbose */,  "InterfaceDiskSpace.Test.ProdUnitTest" /* User test class */, "Run" /* User test method */, 0 /* Start Production */)

If using the Docker Container created by the Dockerfile in this pacakge the UnitTest folder and global should be set up, if running else where and you want to use the methof above, you'd need to set these two up (UnitTest folder and sub-folder and global pointing to it), for example:

IRISAPP>set ^UnitTestRoot="C:\UnitTests"

Or:

IRISAPP>set ^UnitTestRoot="/opt/irisapp/unittests"

How to start coding

This repository is ready to code in VSCode with ObjectScript plugin. Install VSCode and ObjectScript plugin and open the folder in VSCode.

What's insde the repo

Dockerfile

The simplest dockerfile which starts IRIS and imports Installer.cls and then runs the Installer.setup method, which creates IRISAPP Namespace and imports ObjectScript code from /src folder into it. Use the related docker-compose.yml to easily setup additional parametes like port number and where you map keys and host folders. Use .env/ file to adjust the dockerfile being used in docker-compose. It also installs ZPM - ObjectScript Package Manager client

module.xml

This file describes project to be installed as package in ObjectScript Package Manager.

.vscode/settings.json

Settings file to let you immedietly code in VSCode with VSCode ObjectScript plugin)

.vscode/launch.json

Config file if you want to debug with VSCode ObjectScript

src/cls/InterfaceDiskSpace

Classes to run collection and reporting process.

src/cls/InterfaceDiskSpace/Test

Test related classes

ZPM installation
zpm "install interfaces-diskspace-validation"
Rating
5 (1)
Category
Developer Environment
Works with
CachéEnsembleHealthShareInterSystems IRISInterSystems IRIS for Health
Tags
Info
Version
1.21.3
Last updated
2020-05-10
Repository
Open
Documentation
Open
License
Link