├── .cproject ├── .github └── workflows │ └── manual.yml ├── .gitignore ├── CITATION.cff ├── LICENSE.pdf ├── README.md ├── RELEASE-NOTES.md ├── build.gradle ├── buildSrc ├── build.gradle ├── gradle.properties ├── settings.gradle └── src │ ├── main │ ├── groovy │ │ └── gov │ │ │ └── nasa │ │ │ └── tess │ │ │ └── buildutil │ │ │ └── XmlValidator.groovy │ ├── java │ │ └── gov │ │ │ └── nasa │ │ │ └── ziggy │ │ │ └── buildutil │ │ │ ├── Mcc.java │ │ │ ├── SystemArchitecture.java │ │ │ ├── TessExecTask.java │ │ │ ├── ZiggyCpp.java │ │ │ ├── ZiggyCppMex.java │ │ │ ├── ZiggyCppMexPojo.java │ │ │ └── ZiggyCppPojo.java │ ├── resources │ │ └── ZiggyVersion.java.ftlh │ └── sh │ │ └── macosx-sdk-selection.sh │ └── test │ ├── java │ └── gov │ │ └── nasa │ │ └── ziggy │ │ └── buildutil │ │ ├── SystemArchitectureTest.java │ │ ├── ZiggyCppMexPojoTest.java │ │ └── ZiggyCppPojoTest.java │ └── resources │ └── gov │ └── nasa │ └── tess │ └── buildutil │ ├── processed-jaxb.xsd │ └── raw-jaxb-generated.xsd ├── doc ├── NPR-7150.2 │ └── Ziggy-NPR7150.2C.xlsx ├── legal │ ├── NASA-Corporate-CLA.pdf │ └── NASA-Individual-CLA.pdf ├── section-508 │ └── Ziggy-Section-508-Checklist.docx ├── settings.gradle └── user-manual │ ├── advanced-uow.md │ ├── alerts.md │ ├── algorithm-parameters.md │ ├── building-pipeline.md │ ├── change-param-values.md │ ├── configuring-pipeline.md │ ├── console-cli.md │ ├── contact-us.md │ ├── customizing-ziggy.md │ ├── data-receipt-display.md │ ├── data-receipt-execution.md │ ├── data-receipt.md │ ├── datastore-regexp.md │ ├── datastore-task-dir.md │ ├── datastore.md │ ├── display-logs.md │ ├── downloading-and-building-ziggy.md │ ├── dusty-corners.md │ ├── edit-pipeline.md │ ├── event-handler-definition.md │ ├── event-handler-examples.md │ ├── event-handler-intro.md │ ├── event-handler-labels.md │ ├── event-handler.md │ ├── halt-tasks.md │ ├── hpc-cost.md │ ├── images │ ├── architecture-diagram.png │ ├── data-receipt-display.png │ ├── data-receipt-list.png │ ├── datastore-display-1.png │ ├── datastore-display-2.png │ ├── disable-reprocess.png │ ├── edit-array-1.png │ ├── edit-array-2.png │ ├── edit-datastore-regexp-1.png │ ├── edit-datastore-regexp-2.png │ ├── edit-param-set.png │ ├── edit-pipeline.png │ ├── event-handler-display-1.png │ ├── event-handler-instances-1.png │ ├── event-handler-instances-2.png │ ├── event-handler-tasks-1.png │ ├── event-handler-tasks-2.png │ ├── exception-1.png │ ├── flip-tasks.png │ ├── gui-start-end-adjusted.png │ ├── gui.png │ ├── halt-alert.png │ ├── halt-in-progress.png │ ├── halt-task-menu-item.png │ ├── hpc-cost-est.png │ ├── instances-running.png │ ├── logs-list.png │ ├── monitor-processes.png │ ├── monitoring-alerts.png │ ├── monitoring-worker-2.png │ ├── monitoring-worker.png │ ├── param-import-dialog-box.png │ ├── param-lib-all-groups-expanded.png │ ├── param-lib-context-menu.png │ ├── param-lib-group-assigned.png │ ├── param-lib-modified.png │ ├── param-lib-used.png │ ├── parameter-library.png │ ├── permuter-tasks.png │ ├── pipeline-done.png │ ├── pipelines-config-1.png │ ├── pipelines-config-2.png │ ├── pipelines-panel.png │ ├── remote-dialog-1.png │ ├── remote-dialog-2.png │ ├── remote-dialog-3.png │ ├── resources-initial.png │ ├── resources-updated.png │ ├── restart-dialog.png │ ├── select-group-dialog.png │ ├── select-group-with-test-group.png │ ├── start-end-nodes.png │ ├── start-pipeline.png │ ├── task-log-display.png │ ├── task-log-showing-problem.png │ ├── tasks-done.png │ ├── tasks-menu.png │ └── ziggy-small-clear.png │ ├── instances-panel.md │ ├── intermediate-topics.md │ ├── log-files.md │ ├── monitoring.md │ ├── more-parameter-sets.md │ ├── more-rdbms.md │ ├── nicknames.md │ ├── organizing-tables.md │ ├── other-pipeline-algorithms.md │ ├── parameter-overrides.md │ ├── pipeline-algorithms.md │ ├── pipeline-architecture.md │ ├── pipeline-definition.md │ ├── pipelines-and-nodes.md │ ├── properties.md │ ├── python-pipeline-algorithms.md │ ├── rdbms.md │ ├── redefine-pipeline.md │ ├── remote-dialog.md │ ├── remote-environments.md │ ├── rerun-task.md │ ├── running-pipeline.md │ ├── select-hpc.md │ ├── start-end-nodes.md │ ├── start-pipeline.md │ ├── system-requirements.md │ ├── troubleshooting.md │ ├── user-manual.md │ ├── version-tracking.md │ ├── ziggy-gui-troubleshooting.md │ └── ziggy-gui.md ├── etc ├── hsqldb.wrapper.conf ├── log4j2.xml ├── pipeline.properties.EXAMPLE ├── supervisor.wrapper.conf ├── ziggy.bash-completion ├── ziggy.d │ └── hecc-environment.xml └── ziggy.properties ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── ide ├── ziggy-eclipse-clean-up.xml └── ziggy-eclipse-formatter.xml ├── licenses ├── HDF5_110121.PDF ├── com.github.librepdf--openpdf--1.3.x ├── com.google.guava--guava--23.x ├── com.jgoodies--jgoodies-forms--1.9.x ├── com.jgoodies--jgoodies-looks--2.7.x ├── commons-cli--commons-cli--1.5.x ├── commons-codec--commons-codec--1.x ├── commons-io--commons-io--2.11.x ├── git-2.x ├── gradle-4.1.x ├── h5py-3.7.x ├── junit--junit--4.x ├── licenses.md ├── numpy-1.23.x ├── org.apache.commons--commons-collections4--4.x ├── org.apache.commons--commons-compress--1.x ├── org.apache.commons--commons-configuration2--2.8.x ├── org.apache.commons--commons-csv--1.9.x ├── org.apache.commons--commons-exec--1.x ├── org.apache.commons--commons-lang3--3.12.x ├── org.apache.commons--commons-math3--3.6.x ├── org.apache.commons--commons-text--1.x ├── org.apache.logging.log4j--log4j-api--2.19.x ├── org.apache.logging.log4j--log4j-core--2.19.x ├── org.apache.logging.log4j--log4j-slf4j-impl--2.17.x ├── org.freemarker--freemarker--2.3.x ├── org.hamcrest--hamcrest--2.x ├── org.hibernate--hibernate-core--4.2.x ├── org.hibernate.javax.persistence--hibernate-jpa-2.0-api--1.0.x ├── org.hsqldb--hsqldb--2.3.2 ├── org.javassist--javassist--3.29.x ├── org.jfree--jfreechart--1.0.x ├── org.jsoup--jsoup--1.16.x ├── org.mockito--mockito-core--3.12.x ├── org.netbeans.api--org-netbeans-swing-outline--x ├── org.postgresql--postgresql--9.4-1201-jdbc4 ├── org.tros--l2fprod-properties-editor--1.3.x ├── pillow-9.2.x └── tanukisoft--wrapper--3.2.x ├── sample-pipeline ├── build-env.sh ├── clean-env.sh ├── data │ ├── models │ │ └── sample-model.txt │ ├── sample-pipeline-manifest.xml │ ├── set-1 │ │ └── L0 │ │ │ ├── nasa-logo-file-0.png │ │ │ ├── nasa-logo-file-1.png │ │ │ ├── nasa-logo-file-2.png │ │ │ └── nasa-logo-file-3.png │ └── set-2 │ │ └── L0 │ │ ├── nasa-logo-file-0.png │ │ ├── nasa-logo-file-1.png │ │ ├── nasa-logo-file-2.png │ │ └── nasa-logo-file-3.png ├── etc │ ├── sample.properties │ ├── ziggy-extra.d │ │ ├── pd-sample.xml │ │ └── pl-with-overrides.xml │ └── ziggy.d │ │ ├── sample-pipeline.xml │ │ └── sample-remote-environment.xml ├── multi-data │ ├── sample-1 │ │ ├── sample-1-pipeline-manifest.xml │ │ ├── set-3 │ │ │ └── L0 │ │ │ │ ├── nasa-logo-file-0.png │ │ │ │ ├── nasa-logo-file-1.png │ │ │ │ ├── nasa-logo-file-2.png │ │ │ │ └── nasa-logo-file-3.png │ │ └── set-4 │ │ │ └── L0 │ │ │ ├── nasa-logo-file-0.png │ │ │ ├── nasa-logo-file-1.png │ │ │ ├── nasa-logo-file-2.png │ │ │ └── nasa-logo-file-3.png │ ├── sample-2 │ │ ├── sample-2-pipeline-manifest.xml │ │ ├── set-5 │ │ │ └── L0 │ │ │ │ ├── nasa-logo-file-0.png │ │ │ │ ├── nasa-logo-file-1.png │ │ │ │ ├── nasa-logo-file-2.png │ │ │ │ └── nasa-logo-file-3.png │ │ └── set-6 │ │ │ └── L0 │ │ │ ├── nasa-logo-file-0.png │ │ │ ├── nasa-logo-file-1.png │ │ │ ├── nasa-logo-file-2.png │ │ │ └── nasa-logo-file-3.png │ └── sample-3 │ │ ├── sample-3-pipeline-manifest.xml │ │ ├── set-7 │ │ └── L0 │ │ │ ├── nasa-logo-file-0.png │ │ │ ├── nasa-logo-file-1.png │ │ │ ├── nasa-logo-file-2.png │ │ │ └── nasa-logo-file-3.png │ │ └── set-8 │ │ └── L0 │ │ ├── nasa-logo-file-0.png │ │ ├── nasa-logo-file-1.png │ │ └── nasa-logo-file-2.png └── src │ └── main │ └── python │ └── sample_pipeline │ ├── major_tom │ ├── __init__.py │ └── major_tom.py │ └── setup.py ├── script-plugins ├── copy.gradle ├── database-schemas.gradle ├── eclipse.gradle ├── hdf5.gradle ├── misc.gradle ├── publish.gradle ├── test.gradle ├── wrapper.gradle ├── xlint.gradle ├── xml-schemas.gradle └── ziggy-libraries.gradle ├── settings.gradle ├── src ├── main │ ├── c │ │ └── linux-cache-control.c │ ├── cpp │ │ ├── libziggy │ │ │ ├── ziggy_exceptions.cpp │ │ │ ├── ziggy_exceptions.h │ │ │ ├── ziggy_signal_handler.h │ │ │ └── ziggy_signal_handler_cpp │ │ └── libziggymi │ │ │ ├── Hdf5Interface.cpp │ │ │ ├── Hdf5Interface.h │ │ │ ├── IOHandler.cpp │ │ │ ├── IOHandler.h │ │ │ └── Persistable.h │ ├── java │ │ ├── gov │ │ │ └── nasa │ │ │ │ └── ziggy │ │ │ │ ├── collections │ │ │ │ ├── HyperRectangle.java │ │ │ │ ├── HyperRectangleIterator.java │ │ │ │ ├── RemovableArrayList.java │ │ │ │ ├── ZiggyArrayUtils.java │ │ │ │ ├── ZiggyDataType.java │ │ │ │ └── package-info.java │ │ │ │ ├── crud │ │ │ │ ├── AbstractCrud.java │ │ │ │ ├── AbstractCrudInterface.java │ │ │ │ ├── Canonicalizable.java │ │ │ │ ├── ProtectedEntityInterceptor.java │ │ │ │ ├── SimpleCrud.java │ │ │ │ ├── ZiggyQuery.java │ │ │ │ └── package-info.java │ │ │ │ ├── data │ │ │ │ ├── accounting │ │ │ │ │ ├── DataAccountabilityReport.java │ │ │ │ │ ├── PipelineTaskRenderer.java │ │ │ │ │ ├── SimpleTaskRenderer.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── datastore │ │ │ │ │ ├── DataFileType.java │ │ │ │ │ ├── DatastoreCopier.java │ │ │ │ │ ├── DatastoreFileManager.java │ │ │ │ │ ├── DatastoreNode.java │ │ │ │ │ ├── DatastoreNodeCrud.java │ │ │ │ │ ├── DatastoreOperations.java │ │ │ │ │ ├── DatastoreRegexp.java │ │ │ │ │ ├── DatastoreRegexpCrud.java │ │ │ │ │ ├── DatastoreWalker.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── management │ │ │ │ │ ├── Acknowledgement.java │ │ │ │ │ ├── ChecksumType.java │ │ │ │ │ ├── DataFilePaths.java │ │ │ │ │ ├── DataReceiptDefinition.java │ │ │ │ │ ├── DataReceiptFile.java │ │ │ │ │ ├── DataReceiptInstance.java │ │ │ │ │ ├── DataReceiptOperations.java │ │ │ │ │ ├── DataReceiptPipelineStepExecutor.java │ │ │ │ │ ├── DataReceiptStatus.java │ │ │ │ │ ├── DatastoreDirectoryDataReceiptDefinition.java │ │ │ │ │ ├── DatastoreProducerConsumer.java │ │ │ │ │ ├── DatastoreProducerConsumerCrud.java │ │ │ │ │ ├── DatastoreProducerConsumerOperations.java │ │ │ │ │ ├── FailedImport.java │ │ │ │ │ ├── FailedImportCrud.java │ │ │ │ │ ├── Manifest.java │ │ │ │ │ ├── ManifestCrud.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ │ ├── metrics │ │ │ │ ├── CounterMetric.java │ │ │ │ ├── GlobalThreadMetrics.java │ │ │ │ ├── IntervalMetric.java │ │ │ │ ├── IntervalMetricKey.java │ │ │ │ ├── Metric.java │ │ │ │ ├── MetricType.java │ │ │ │ ├── MetricValue.java │ │ │ │ ├── MetricsCrud.java │ │ │ │ ├── MetricsDumper.java │ │ │ │ ├── MetricsOperations.java │ │ │ │ ├── TaskMetrics.java │ │ │ │ ├── TimeAndPercentile.java │ │ │ │ ├── ValueMetric.java │ │ │ │ ├── package-info.java │ │ │ │ └── report │ │ │ │ │ ├── AppendixReport.java │ │ │ │ │ ├── BytesFormat.java │ │ │ │ │ ├── BytesPerSecondFormat.java │ │ │ │ │ ├── CategoryReport.java │ │ │ │ │ ├── FloatFormat.java │ │ │ │ │ ├── Format.java │ │ │ │ │ ├── HumanReadableStatistics.java │ │ │ │ │ ├── InstanceMetricsReport.java │ │ │ │ │ ├── InstanceReport.java │ │ │ │ │ ├── MatlabMetrics.java │ │ │ │ │ ├── MatlabReport.java │ │ │ │ │ ├── Memdrone.java │ │ │ │ │ ├── MemdroneLog.java │ │ │ │ │ ├── MemdroneSample.java │ │ │ │ │ ├── MetricsCli.java │ │ │ │ │ ├── NodeIndexRange.java │ │ │ │ │ ├── NodeReport.java │ │ │ │ │ ├── PdfRenderer.java │ │ │ │ │ ├── PerformanceReport.java │ │ │ │ │ ├── Report.java │ │ │ │ │ ├── ReportFilePaths.java │ │ │ │ │ ├── TimeMillisFormat.java │ │ │ │ │ ├── TopNList.java │ │ │ │ │ ├── TopNListElement.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── models │ │ │ │ ├── ModelImporter.java │ │ │ │ ├── ModelOperations.java │ │ │ │ ├── SemanticVersionNumber.java │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── pipeline │ │ │ │ ├── InstanceAndTasks.java │ │ │ │ ├── PipelineExecutor.java │ │ │ │ ├── PipelineReportGenerator.java │ │ │ │ ├── PipelineTaskDebugger.java │ │ │ │ ├── PipelineTaskInformation.java │ │ │ │ ├── definition │ │ │ │ │ ├── AuditInfo.java │ │ │ │ │ ├── ClassWrapper.java │ │ │ │ │ ├── ExecutionClock.java │ │ │ │ │ ├── Group.java │ │ │ │ │ ├── HasExternalId.java │ │ │ │ │ ├── ModelMetadata.java │ │ │ │ │ ├── ModelRegistry.java │ │ │ │ │ ├── ModelType.java │ │ │ │ │ ├── Parameter.java │ │ │ │ │ ├── ParameterSet.java │ │ │ │ │ ├── Pipeline.java │ │ │ │ │ ├── PipelineDefinitionExporter.java │ │ │ │ │ ├── PipelineInstance.java │ │ │ │ │ ├── PipelineInstanceNode.java │ │ │ │ │ ├── PipelineNode.java │ │ │ │ │ ├── PipelineNodeExecutionResources.java │ │ │ │ │ ├── PipelineProcessingOptions.java │ │ │ │ │ ├── PipelineStepExecutor.java │ │ │ │ │ ├── PipelineTask.java │ │ │ │ │ ├── PipelineTaskData.java │ │ │ │ │ ├── PipelineTaskDisplayData.java │ │ │ │ │ ├── PipelineTaskMetric.java │ │ │ │ │ ├── ProcessingStep.java │ │ │ │ │ ├── RemoteJob.java │ │ │ │ │ ├── TaskCounts.java │ │ │ │ │ ├── TaskExecutionLog.java │ │ │ │ │ ├── UniqueNameVersionPipelineComponent.java │ │ │ │ │ ├── database │ │ │ │ │ │ ├── ComposedHasExternalIdCrud.java │ │ │ │ │ │ ├── DataFileTypeCrud.java │ │ │ │ │ │ ├── GroupCrud.java │ │ │ │ │ │ ├── GroupOperations.java │ │ │ │ │ │ ├── HasExternalIdCrud.java │ │ │ │ │ │ ├── ModelCrud.java │ │ │ │ │ │ ├── ParameterSetCrud.java │ │ │ │ │ │ ├── ParametersOperations.java │ │ │ │ │ │ ├── PipelineCrud.java │ │ │ │ │ │ ├── PipelineInstanceCrud.java │ │ │ │ │ │ ├── PipelineInstanceFilter.java │ │ │ │ │ │ ├── PipelineInstanceNodeCrud.java │ │ │ │ │ │ ├── PipelineInstanceNodeOperations.java │ │ │ │ │ │ ├── PipelineInstanceOperations.java │ │ │ │ │ │ ├── PipelineNodeCrud.java │ │ │ │ │ │ ├── PipelineNodeOperations.java │ │ │ │ │ │ ├── PipelineOperations.java │ │ │ │ │ │ ├── PipelineStepCrud.java │ │ │ │ │ │ ├── PipelineStepOperations.java │ │ │ │ │ │ ├── PipelineTaskCrud.java │ │ │ │ │ │ ├── PipelineTaskDataCrud.java │ │ │ │ │ │ ├── PipelineTaskDataOperations.java │ │ │ │ │ │ ├── PipelineTaskDisplayDataOperations.java │ │ │ │ │ │ ├── PipelineTaskOperations.java │ │ │ │ │ │ ├── RuntimeObjectFactory.java │ │ │ │ │ │ ├── UniqueNameVersionPipelineComponentCrud.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── importer │ │ │ │ │ │ ├── DatastoreImportConditioner.java │ │ │ │ │ │ ├── ParameterSetImportConditioner.java │ │ │ │ │ │ ├── PipelineDefinitionCli.java │ │ │ │ │ │ ├── PipelineDefinitionFile.java │ │ │ │ │ │ ├── PipelineDefinitionImporter.java │ │ │ │ │ │ ├── PipelineImportConditioner.java │ │ │ │ │ │ ├── PipelineImportOperations.java │ │ │ │ │ │ ├── PipelineStepImportConditioner.java │ │ │ │ │ │ └── RemoteEnvironmentImportConditioner.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── step │ │ │ │ │ ├── AlgorithmExecutor.java │ │ │ │ │ ├── AlgorithmLifecycle.java │ │ │ │ │ ├── AlgorithmLifecycleManager.java │ │ │ │ │ ├── AlgorithmMonitor.java │ │ │ │ │ ├── AlgorithmParameters.java │ │ │ │ │ ├── AlgorithmPipelineStepExecutor.java │ │ │ │ │ ├── AlgorithmStateFiles.java │ │ │ │ │ ├── ComputeNodeMaster.java │ │ │ │ │ ├── FatalAlgorithmProcessingException.java │ │ │ │ │ ├── LocalAlgorithmExecutor.java │ │ │ │ │ ├── PipelineCategories.java │ │ │ │ │ ├── PipelineMetrics.java │ │ │ │ │ ├── PipelineStep.java │ │ │ │ │ ├── PipelineStepExecutionResources.java │ │ │ │ │ ├── ProcessingFailureSummary.java │ │ │ │ │ ├── TaskConfiguration.java │ │ │ │ │ ├── TaskDirectoryManager.java │ │ │ │ │ ├── TaskMonitor.java │ │ │ │ │ ├── TimestampFile.java │ │ │ │ │ ├── WorkerMemoryManager.java │ │ │ │ │ ├── hdf5 │ │ │ │ │ │ ├── AbstractHdf5Array.java │ │ │ │ │ │ ├── AlgorithmParametersHdf5Array.java │ │ │ │ │ │ ├── Hdf5AlgorithmInterface.java │ │ │ │ │ │ ├── PersistableHdf5Array.java │ │ │ │ │ │ ├── PrimitiveHdf5Array.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── io │ │ │ │ │ │ ├── AlgorithmErrorReturn.java │ │ │ │ │ │ ├── AlgorithmInterfaceUtils.java │ │ │ │ │ │ ├── DatastoreDirectoryPipelineInputs.java │ │ │ │ │ │ ├── DatastoreDirectoryPipelineOutputs.java │ │ │ │ │ │ ├── PipelineInputs.java │ │ │ │ │ │ ├── PipelineInputsOutputsUtils.java │ │ │ │ │ │ ├── PipelineOutputs.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ ├── remote │ │ │ │ │ │ ├── Architecture.java │ │ │ │ │ │ ├── BatchManager.java │ │ │ │ │ │ ├── BatchParameters.java │ │ │ │ │ │ ├── BatchParametersAggregator.java │ │ │ │ │ │ ├── BatchQueue.java │ │ │ │ │ │ ├── NasQueueTimeMetrics.java │ │ │ │ │ │ ├── QueueTimeMetrics.java │ │ │ │ │ │ ├── RemoteAlgorithmExecutor.java │ │ │ │ │ │ ├── RemoteArchitectureOptimizer.java │ │ │ │ │ │ ├── RemoteEnvironment.java │ │ │ │ │ │ ├── RemoteEnvironmentCrud.java │ │ │ │ │ │ ├── RemoteEnvironmentOperations.java │ │ │ │ │ │ ├── RemoteExecutionProperties.java │ │ │ │ │ │ ├── RemoteJobInformation.java │ │ │ │ │ │ ├── batch │ │ │ │ │ │ │ ├── PbsBatchManager.java │ │ │ │ │ │ │ ├── PbsBatchParameters.java │ │ │ │ │ │ │ ├── PbsBatchParametersAggregator.java │ │ │ │ │ │ │ └── SupportedBatchSystem.java │ │ │ │ │ │ └── package-info.java │ │ │ │ │ └── subtask │ │ │ │ │ │ ├── BeforeAndAfterAlgorithmExecutor.java │ │ │ │ │ │ ├── JavaSubtaskExecutor.java │ │ │ │ │ │ ├── MatlabSubtaskExecutor.java │ │ │ │ │ │ ├── MatlabUtils.java │ │ │ │ │ │ ├── PythonSubtaskExecutor.java │ │ │ │ │ │ ├── SubtaskAllocation.java │ │ │ │ │ │ ├── SubtaskAllocator.java │ │ │ │ │ │ ├── SubtaskClient.java │ │ │ │ │ │ ├── SubtaskDirectoryIterator.java │ │ │ │ │ │ ├── SubtaskExecutor.java │ │ │ │ │ │ ├── SubtaskExecutorFactory.java │ │ │ │ │ │ ├── SubtaskInformation.java │ │ │ │ │ │ ├── SubtaskLocator.java │ │ │ │ │ │ ├── SubtaskMaster.java │ │ │ │ │ │ ├── SubtaskServer.java │ │ │ │ │ │ └── SubtaskUtils.java │ │ │ │ └── xml │ │ │ │ │ ├── HasXmlSchemaFilename.java │ │ │ │ │ ├── ParameterSetDescriptor.java │ │ │ │ │ ├── ValidatingXmlManager.java │ │ │ │ │ ├── XmlReference.java │ │ │ │ │ ├── XmlSchemaExporter.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── services │ │ │ │ ├── alert │ │ │ │ │ ├── Alert.java │ │ │ │ │ ├── AlertLog.java │ │ │ │ │ ├── AlertLogCrud.java │ │ │ │ │ ├── AlertLogOperations.java │ │ │ │ │ ├── AlertService.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── config │ │ │ │ │ ├── ConfigMerge.java │ │ │ │ │ ├── ConfigOps.java │ │ │ │ │ ├── DirectoryProperties.java │ │ │ │ │ ├── DumpSystemProperties.java │ │ │ │ │ ├── PropertyName.java │ │ │ │ │ ├── ZiggyConfiguration.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── database │ │ │ │ │ ├── AnnotatedPojoList.java │ │ │ │ │ ├── ConnectInfo.java │ │ │ │ │ ├── DatabaseController.java │ │ │ │ │ ├── DatabaseOperations.java │ │ │ │ │ ├── DatabaseService.java │ │ │ │ │ ├── HibernateDatabaseService.java │ │ │ │ │ ├── HibernateDatabaseServiceBase.java │ │ │ │ │ ├── HsqldbController.java │ │ │ │ │ ├── MatlabJavaInitialization.java │ │ │ │ │ ├── PostgresqlController.java │ │ │ │ │ ├── SingleThreadExecutor.java │ │ │ │ │ ├── SqlDialect.java │ │ │ │ │ ├── SqlRunner.java │ │ │ │ │ ├── ZiggyHibernateConfiguration.java │ │ │ │ │ ├── ZiggySchemaExport.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── events │ │ │ │ │ ├── ZiggyEvent.java │ │ │ │ │ ├── ZiggyEventCrud.java │ │ │ │ │ ├── ZiggyEventHandler.java │ │ │ │ │ ├── ZiggyEventOperations.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── logging │ │ │ │ │ ├── PlainTextLogOutputStream.java │ │ │ │ │ ├── TaskLogInformation.java │ │ │ │ │ ├── WriterLogOutputStream.java │ │ │ │ │ ├── ZiggyLog.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── messages │ │ │ │ │ ├── AlertMessage.java │ │ │ │ │ ├── AllJobsFinishedMessage.java │ │ │ │ │ ├── EventHandlerRequest.java │ │ │ │ │ ├── EventHandlerToggleStateRequest.java │ │ │ │ │ ├── HaltTasksRequest.java │ │ │ │ │ ├── HeartbeatCheckMessage.java │ │ │ │ │ ├── HeartbeatMessage.java │ │ │ │ │ ├── MonitorAlgorithmRequest.java │ │ │ │ │ ├── NoRunningOrQueuedPipelinesMessage.java │ │ │ │ │ ├── ParametersChangedMessage.java │ │ │ │ │ ├── PipelineInstanceFinishedMessage.java │ │ │ │ │ ├── PipelineInstanceStartedMessage.java │ │ │ │ │ ├── PipelineMessage.java │ │ │ │ │ ├── RemoveTaskFromKilledTasksMessage.java │ │ │ │ │ ├── RestartTasksRequest.java │ │ │ │ │ ├── RetryTransitionRequest.java │ │ │ │ │ ├── RunningPipelinesCheckRequest.java │ │ │ │ │ ├── ShutdownMessage.java │ │ │ │ │ ├── SingleTaskLogMessage.java │ │ │ │ │ ├── SingleTaskLogRequest.java │ │ │ │ │ ├── SpecifiedRequestorMessage.java │ │ │ │ │ ├── StartMemdroneRequest.java │ │ │ │ │ ├── StartPipelineRequest.java │ │ │ │ │ ├── TaskHaltedMessage.java │ │ │ │ │ ├── TaskLogInformationMessage.java │ │ │ │ │ ├── TaskLogInformationRequest.java │ │ │ │ │ ├── TaskProcessingCompleteMessage.java │ │ │ │ │ ├── TaskRequest.java │ │ │ │ │ ├── UpdateProcessingStepMessage.java │ │ │ │ │ ├── WorkerResourcesMessage.java │ │ │ │ │ ├── WorkerResourcesRequest.java │ │ │ │ │ ├── WorkerStatusMessage.java │ │ │ │ │ ├── ZiggyEventHandlerInfoMessage.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── messaging │ │ │ │ │ ├── HeartbeatManager.java │ │ │ │ │ ├── MessageAction.java │ │ │ │ │ ├── ZiggyMessenger.java │ │ │ │ │ ├── ZiggyRmiClient.java │ │ │ │ │ ├── ZiggyRmiClientService.java │ │ │ │ │ ├── ZiggyRmiServer.java │ │ │ │ │ ├── ZiggyRmiServerService.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── metrics │ │ │ │ │ ├── DeltaMetricValueGenerator.java │ │ │ │ │ ├── MetricsFileParser.java │ │ │ │ │ ├── MetricsReaperThread.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ └── process │ │ │ │ │ ├── AbstractPipelineProcess.java │ │ │ │ │ ├── ExternalProcess.java │ │ │ │ │ ├── ExternalProcessUtils.java │ │ │ │ │ ├── ProcessInfo.java │ │ │ │ │ ├── StatusMessage.java │ │ │ │ │ ├── StatusMessageBroadcaster.java │ │ │ │ │ ├── StatusReporter.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── supervisor │ │ │ │ ├── FileTransfer.java │ │ │ │ ├── InstanceReporter.java │ │ │ │ ├── PipelineInstanceManager.java │ │ │ │ ├── PipelineSupervisor.java │ │ │ │ ├── StartPipelineRequestManager.java │ │ │ │ ├── TaskRequestHandler.java │ │ │ │ ├── TaskRequestHandlerLifecycleManager.java │ │ │ │ └── package-info.java │ │ │ │ ├── ui │ │ │ │ ├── ClusterController.java │ │ │ │ ├── ZiggyConsole.java │ │ │ │ ├── ZiggyConsolePanel.java │ │ │ │ ├── ZiggyGuiConsole.java │ │ │ │ ├── ZiggyGuiConstants.java │ │ │ │ ├── datastore │ │ │ │ │ ├── EditDatastoreRegexpDialog.java │ │ │ │ │ ├── ViewEditDatastorePanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── dr │ │ │ │ │ ├── DataReceiptInstanceDialog.java │ │ │ │ │ ├── DataReceiptPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── events │ │ │ │ │ ├── ZiggyEventHandlerPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── instances │ │ │ │ │ ├── AlertLogDialog.java │ │ │ │ │ ├── InstanceCostEstimateDialog.java │ │ │ │ │ ├── InstanceDetailsDialog.java │ │ │ │ │ ├── InstanceStatsDialog.java │ │ │ │ │ ├── InstancesControlPanel.java │ │ │ │ │ ├── InstancesPanel.java │ │ │ │ │ ├── InstancesTable.java │ │ │ │ │ ├── InstancesTasksPanel.java │ │ │ │ │ ├── InstancesTasksPanelAutoRefresh.java │ │ │ │ │ ├── ParameterSetViewDialog.java │ │ │ │ │ ├── ParameterSetViewPanel.java │ │ │ │ │ ├── RefreshPanelListener.java │ │ │ │ │ ├── RestartDialog.java │ │ │ │ │ ├── SelectedInstanceChangedMessage.java │ │ │ │ │ ├── SingleTaskLogDialog.java │ │ │ │ │ ├── TaskHalter.java │ │ │ │ │ ├── TaskInfoDialog.java │ │ │ │ │ ├── TaskLogInformationDialog.java │ │ │ │ │ ├── TaskMetricsTableModel.java │ │ │ │ │ ├── TaskRestarter.java │ │ │ │ │ ├── TaskStatusSummaryPanel.java │ │ │ │ │ ├── TasksPanel.java │ │ │ │ │ ├── TasksTableModel.java │ │ │ │ │ ├── TasksUpdatedMessage.java │ │ │ │ │ ├── ViewParametersDialog.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── metrilyzer │ │ │ │ │ ├── DatabaseMetricsTypeListModel.java │ │ │ │ │ ├── DatabaseMetricsValueSource.java │ │ │ │ │ ├── FileMetricsValueSource.java │ │ │ │ │ ├── FileSourceMetricsTypeListModel.java │ │ │ │ │ ├── MetricTypeListModel.java │ │ │ │ │ ├── MetricsChartPanel.java │ │ │ │ │ ├── MetricsSelectorPanel.java │ │ │ │ │ ├── MetricsValueSource.java │ │ │ │ │ ├── MetrilyzerPanel.java │ │ │ │ │ ├── SampleList.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── package-info.java │ │ │ │ ├── parameters │ │ │ │ │ ├── EditParameterSetDialog.java │ │ │ │ │ ├── ImportParamLibDialog.java │ │ │ │ │ ├── ViewEditParameterSetsPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── pipeline │ │ │ │ │ ├── EditPipelineDialog.java │ │ │ │ │ ├── ParameterSetAssignment.java │ │ │ │ │ ├── ParameterSetMapEditorDialog.java │ │ │ │ │ ├── ParameterSetMapEditorListener.java │ │ │ │ │ ├── ParameterSetMapEditorPanel.java │ │ │ │ │ ├── PipelineGraphCanvas.java │ │ │ │ │ ├── PipelineNodeResourcesDialog.java │ │ │ │ │ ├── PipelineNodeWidget.java │ │ │ │ │ ├── PipelineNodesListModel.java │ │ │ │ │ ├── RemoteExecutionDialog.java │ │ │ │ │ ├── StartPipelineDialog.java │ │ │ │ │ ├── TaskInformationDialog.java │ │ │ │ │ ├── ViewEditPipelinesPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── status │ │ │ │ │ ├── AlertsStatusPanel.java │ │ │ │ │ ├── Indicator.java │ │ │ │ │ ├── LabelValue.java │ │ │ │ │ ├── PipelinesStatusPanel.java │ │ │ │ │ ├── ProcessesStatusPanel.java │ │ │ │ │ ├── StatusPanel.java │ │ │ │ │ ├── StatusSummaryPanel.java │ │ │ │ │ ├── WorkerStatusPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── step │ │ │ │ │ ├── EditPipelineStepDialog.java │ │ │ │ │ ├── ViewEditPipelineStepLibraryPanel.java │ │ │ │ │ └── package-info.java │ │ │ │ └── util │ │ │ │ │ ├── ClasspathUtils.java │ │ │ │ │ ├── DateTextField.java │ │ │ │ │ ├── DoubleListDialog.java │ │ │ │ │ ├── FilteredTextField.java │ │ │ │ │ ├── FloatingPointTableCellRenderer.java │ │ │ │ │ ├── GenericListModel.java │ │ │ │ │ ├── GroupInformation.java │ │ │ │ │ ├── GroupsDialog.java │ │ │ │ │ ├── HtmlBuilder.java │ │ │ │ │ ├── InstanceUpdateMessage.java │ │ │ │ │ ├── IntTextField.java │ │ │ │ │ ├── MessageUtils.java │ │ │ │ │ ├── NumericFilter.java │ │ │ │ │ ├── ParameterEditorFactory.java │ │ │ │ │ ├── ParameterRendererFactory.java │ │ │ │ │ ├── PropertySheetHelper.java │ │ │ │ │ ├── RealTextField.java │ │ │ │ │ ├── TextualReportDialog.java │ │ │ │ │ ├── ValidityTestingFormattedTextField.java │ │ │ │ │ ├── ZiggySwingUtils.java │ │ │ │ │ ├── collections │ │ │ │ │ ├── ArrayEditorDialog.java │ │ │ │ │ ├── ArrayImportExportUtils.java │ │ │ │ │ ├── ArrayPropertyEditor.java │ │ │ │ │ ├── ArrayTableCellRenderer.java │ │ │ │ │ ├── InTableButtonsPanel.java │ │ │ │ │ ├── ListEditorDialog.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── models │ │ │ │ │ ├── AbstractZiggyTableModel.java │ │ │ │ │ ├── DatabaseModel.java │ │ │ │ │ ├── ZiggyTreeModel.java │ │ │ │ │ └── package-info.java │ │ │ │ │ ├── package-info.java │ │ │ │ │ └── table │ │ │ │ │ ├── AbstractViewEditGroupPanel.java │ │ │ │ │ ├── AbstractViewEditPanel.java │ │ │ │ │ ├── TableMouseListener.java │ │ │ │ │ ├── TableUpdater.java │ │ │ │ │ ├── WrappingCellRenderer.java │ │ │ │ │ ├── ZiggyTable.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── uow │ │ │ │ ├── DataReceiptUnitOfWorkGenerator.java │ │ │ │ ├── DatastoreDirectoryUnitOfWorkGenerator.java │ │ │ │ ├── DirectoryUnitOfWorkGenerator.java │ │ │ │ ├── SingleUnitOfWorkGenerator.java │ │ │ │ ├── UnitOfWork.java │ │ │ │ ├── UnitOfWorkGenerator.java │ │ │ │ └── package-info.java │ │ │ │ ├── util │ │ │ │ ├── AcceptableCatchBlock.java │ │ │ │ ├── BuildInfo.java │ │ │ │ ├── ClasspathScanner.java │ │ │ │ ├── ClasspathScannerListener.java │ │ │ │ ├── CollectionFilters.java │ │ │ │ ├── HostNameUtils.java │ │ │ │ ├── HumanReadableHeapSize.java │ │ │ │ ├── IntegerFormatter.java │ │ │ │ ├── Iso8601Formatter.java │ │ │ │ ├── PipelineException.java │ │ │ │ ├── RealValueFormatter.java │ │ │ │ ├── ReflectionUtils.java │ │ │ │ ├── RegexBackslashManager.java │ │ │ │ ├── RegexEditor.java │ │ │ │ ├── RegexGroupCounter.java │ │ │ │ ├── Requestor.java │ │ │ │ ├── SpotBugsUtils.java │ │ │ │ ├── SystemProxy.java │ │ │ │ ├── TimeFormatter.java │ │ │ │ ├── TimeRange.java │ │ │ │ ├── WrapperUtils.java │ │ │ │ ├── ZiggyCollectionUtils.java │ │ │ │ ├── ZiggyShutdownHook.java │ │ │ │ ├── ZiggyStringUtils.java │ │ │ │ ├── ZiggyUtils.java │ │ │ │ ├── dispmod │ │ │ │ │ ├── AlertLogDisplayModel.java │ │ │ │ │ ├── DisplayModel.java │ │ │ │ │ ├── InstancesDisplayModel.java │ │ │ │ │ ├── ModelContentClass.java │ │ │ │ │ ├── PipelineStatsDisplayModel.java │ │ │ │ │ ├── TaskMetricsDisplayModel.java │ │ │ │ │ ├── TaskSummaryDisplayModel.java │ │ │ │ │ ├── TasksDisplayModel.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── io │ │ │ │ │ ├── LockManager.java │ │ │ │ │ ├── Persistable.java │ │ │ │ │ ├── ProxyIgnore.java │ │ │ │ │ ├── ZiggyFileUtils.java │ │ │ │ │ └── package-info.java │ │ │ │ ├── os │ │ │ │ │ ├── AbstractMemInfo.java │ │ │ │ │ ├── AbstractSysInfo.java │ │ │ │ │ ├── CpuInfo.java │ │ │ │ │ ├── LinuxCpuInfo.java │ │ │ │ │ ├── LinuxMemInfo.java │ │ │ │ │ ├── LinuxProcInfo.java │ │ │ │ │ ├── MacOSXCpuInfo.java │ │ │ │ │ ├── MacOSXMemInfo.java │ │ │ │ │ ├── MacOSXProcInfo.java │ │ │ │ │ ├── MemInfo.java │ │ │ │ │ ├── OperatingSystemType.java │ │ │ │ │ ├── ProcInfo.java │ │ │ │ │ ├── ProcessUtils.java │ │ │ │ │ ├── SysInfo.java │ │ │ │ │ └── package-info.java │ │ │ │ └── package-info.java │ │ │ │ └── worker │ │ │ │ ├── PipelineWorker.java │ │ │ │ ├── TaskExecutor.java │ │ │ │ ├── WorkerResources.java │ │ │ │ └── package-info.java │ │ └── overview.html │ ├── matlab │ │ ├── @hdf5ConverterClass │ │ │ ├── get_field_type.m │ │ │ ├── hdf5ConverterClass.m │ │ │ ├── read_file.m │ │ │ └── write_file.m │ │ ├── ZiggyErrorWriter.m │ │ ├── initialize_pipeline_configuration.m │ │ ├── intelligent_save.m │ │ ├── is_int_valued.m │ │ ├── pipelinePathClass.m │ │ └── pipelinePropertiesClass.m │ ├── perl │ │ └── ziggy.pl │ ├── python │ │ └── ziggy │ │ │ ├── setup.py │ │ │ └── ziggytools │ │ │ ├── __init__.py │ │ │ ├── fileutils.py │ │ │ ├── hdf5.py │ │ │ ├── pidfile.py │ │ │ ├── stacktrace.py │ │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── hdf5test.py │ │ │ ├── stacktracetests.py │ │ │ └── throwexception.py │ │ │ └── ziggy.py │ ├── resources │ │ └── images │ │ │ ├── Ziggy Logo_final_reverse.png │ │ │ ├── columns.gif │ │ │ ├── nasa-logo.png │ │ │ ├── ziggy-large-clear.png │ │ │ ├── ziggy-logo-lightning-only.png │ │ │ ├── ziggy-logo.png │ │ │ └── ziggy-small-clear.png │ └── sh │ │ ├── hsqldb.sh │ │ ├── memdrone.sh │ │ ├── supervisor.sh │ │ └── ziggy-python.sh └── test │ ├── cpp │ ├── ExternalProcess │ │ ├── Makefile │ │ └── testprog.cpp │ ├── SpiffyExceptionTest.cpp │ └── testmi │ │ ├── Makefile │ │ ├── TestmiController.cpp │ │ └── TestmiController.h │ ├── java │ └── gov │ │ └── nasa │ │ └── ziggy │ │ ├── FlakyTestCategory.java │ │ ├── IntegrationTestCategory.java │ │ ├── MemoryTestUtils.java │ │ ├── ReflectionEquals.java │ │ ├── RunByNameTestCategory.java │ │ ├── TestEventDetector.java │ │ ├── XmlUtils.java │ │ ├── ZiggyDatabaseRule.java │ │ ├── ZiggyDirectoryRule.java │ │ ├── ZiggyPropertyRule.java │ │ ├── ZiggyPropertyRuleTest.java │ │ ├── ZiggyUnitTestUtils.java │ │ ├── collections │ │ ├── HyperRectangleIteratorTest.java │ │ ├── HyperRectangleTest.java │ │ ├── ZiggyArrayUtilsTest.java │ │ └── ZiggyDataTypeTest.java │ │ ├── crud │ │ ├── AbstractCrudTest.java │ │ └── ZiggyQueryTest.java │ │ ├── data │ │ ├── accounting │ │ │ └── DataAccountabilityReportTest.java │ │ ├── datastore │ │ │ ├── DataFileTypeTest.java │ │ │ ├── DatastoreFileManagerFullLocationTest.java │ │ │ ├── DatastoreFileManagerTest.java │ │ │ ├── DatastoreOperationsTest.java │ │ │ ├── DatastoreTestUtils.java │ │ │ └── DatastoreWalkerTest.java │ │ └── management │ │ │ ├── AcknowledgementTest.java │ │ │ ├── DataFileTestUtils.java │ │ │ ├── DataReceiptExternalDefinitionTest.java │ │ │ ├── DataReceiptExternalUnitOfWorkTest.java │ │ │ ├── DataReceiptOperationsTest.java │ │ │ ├── DataReceiptPipelineStepExecutorTest.java │ │ │ ├── DatastoreDirectoryDataReceiptDefinitionTest.java │ │ │ ├── DatastoreProducerConsumerOperationsTest.java │ │ │ ├── ExternalDataReceiptDefinition.java │ │ │ ├── FindFilesConsumedByTasksTest.java │ │ │ └── ManifestTest.java │ │ ├── metrics │ │ ├── CounterMetricTest.java │ │ ├── IntervalMetricTest.java │ │ ├── MetricTest.java │ │ ├── MetricsOperationsTest.java │ │ ├── TaskMetricsTest.java │ │ ├── ValueMetricTest.java │ │ └── report │ │ │ ├── MemdroneLogTest.java │ │ │ ├── MemdroneSampleTest.java │ │ │ ├── MemdroneTest.java │ │ │ └── TopNListTest.java │ │ ├── models │ │ ├── ModelImporterTest.java │ │ ├── ModelOperationsTest.java │ │ └── SemanticVersionNumberTest.java │ │ ├── pipeline │ │ ├── PipelineExecutorTest.java │ │ ├── PipelineTaskInformationTest.java │ │ ├── definition │ │ │ ├── AuditInfoTest.java │ │ │ ├── ClassWrapperTest.java │ │ │ ├── DatastoreProducerConsumerTest.java │ │ │ ├── ExecutionClockTest.java │ │ │ ├── ModelMetadataTest.java │ │ │ ├── ModelTypeTest.java │ │ │ ├── ParameterTest.java │ │ │ ├── PipelineInstanceTest.java │ │ │ ├── PipelineNodeTest.java │ │ │ ├── PipelineTaskDataTest.java │ │ │ ├── PipelineTest.java │ │ │ ├── TaskCountsTest.java │ │ │ ├── database │ │ │ │ ├── GroupOperationsTest.java │ │ │ │ ├── ParametersOperationsTest.java │ │ │ │ ├── PipelineCrudTest.java │ │ │ │ ├── PipelineInstanceNodeOperationsTest.java │ │ │ │ ├── PipelineInstanceOperationsTest.java │ │ │ │ ├── PipelineInstanceTaskCrudTest.java │ │ │ │ ├── PipelineNodeOperationsTest.java │ │ │ │ ├── PipelineOperationsTest.java │ │ │ │ ├── PipelineOperationsTestUtils.java │ │ │ │ ├── PipelineStepOperationsTest.java │ │ │ │ ├── PipelineTaskCrudTest.java │ │ │ │ ├── PipelineTaskDataOperationsTest.java │ │ │ │ ├── PipelineTaskDisplayDataOperationsTest.java │ │ │ │ ├── PipelineTaskOperationsTest.java │ │ │ │ └── RuntimeObjectFactoryTest.java │ │ │ └── importer │ │ │ │ ├── DatastoreImportConditionerTest.java │ │ │ │ ├── ParameterSetImportConditionerTest.java │ │ │ │ ├── PipelineDefinitionFileTest.java │ │ │ │ ├── PipelineDefinitionImporterTest.java │ │ │ │ ├── PipelineImportOperationsTest.java │ │ │ │ └── RemoteEnvironmentImportConditionerTest.java │ │ ├── step │ │ │ ├── AlgorithmExecutorTest.java │ │ │ ├── AlgorithmMonitorTest.java │ │ │ ├── AlgorithmPipelineStepExecutorTest.java │ │ │ ├── ComputeNodeMasterTest.java │ │ │ ├── PipelineStepTest.java │ │ │ ├── ProcessingFailureSummaryTest.java │ │ │ ├── TaskConfigurationManagerTest.java │ │ │ ├── TaskMonitorTest.java │ │ │ ├── TimestampFileTest.java │ │ │ ├── WorkerMemoryManagerTest.java │ │ │ ├── hdf5 │ │ │ │ ├── AbstractHdf5ArrayTest.java │ │ │ │ ├── AlgorithmParametersHdf5ArrayTest.java │ │ │ │ ├── EnumTest.java │ │ │ │ ├── Hdf5AlgorithmInterfaceTest.java │ │ │ │ ├── PersistableHdf5ArrayTest.java │ │ │ │ ├── PersistableSample1.java │ │ │ │ ├── PersistableSample2.java │ │ │ │ ├── PersistableSample3.java │ │ │ │ ├── PersistableSample4.java │ │ │ │ └── PrimitiveHdf5ArrayTest.java │ │ │ ├── io │ │ │ │ ├── DatastoreDirectoryPipelineInputsTest.java │ │ │ │ ├── DatastoreDirectoryPipelineOutputsTest.java │ │ │ │ └── PipelineInputsOutputsUtilsTest.java │ │ │ ├── remote │ │ │ │ ├── ArchitectureTest.java │ │ │ │ ├── ArchitectureTestUtils.java │ │ │ │ ├── BatchQueueTest.java │ │ │ │ ├── BatchQueueTestUtils.java │ │ │ │ ├── NasQueueTimeMetricsTest.java │ │ │ │ ├── RemoteAlgorithmExecutorTest.java │ │ │ │ ├── RemoteArchitectureOptimizerTest.java │ │ │ │ ├── RemoteEnvironmentOperationsTest.java │ │ │ │ ├── RemoteExecutionConfigurationTest.java │ │ │ │ └── batch │ │ │ │ │ ├── PbsBatchManagerTest.java │ │ │ │ │ ├── PbsBatchParametersAggregatorTest.java │ │ │ │ │ └── PbsBatchParametersTest.java │ │ │ └── subtask │ │ │ │ ├── MatlabSubtaskExecutorTest.java │ │ │ │ ├── MatlabUtilsTest.java │ │ │ │ ├── PythonSubtaskExecutorTest.java │ │ │ │ ├── SubtaskAllocatorTest.java │ │ │ │ ├── SubtaskClientTest.java │ │ │ │ ├── SubtaskDirectoryIteratorTest.java │ │ │ │ ├── SubtaskExecutorFactoryTest.java │ │ │ │ ├── SubtaskExecutorTest.java │ │ │ │ ├── SubtaskMasterTest.java │ │ │ │ └── SubtaskServerTest.java │ │ └── xml │ │ │ ├── ParameterSetDescriptorTest.java │ │ │ └── ValidatingXmlManagerTest.java │ │ ├── services │ │ ├── alert │ │ │ └── AlertLogCrudTest.java │ │ ├── config │ │ │ ├── PropertyNameTest.java │ │ │ └── ZiggyConfigurationTest.java │ │ ├── database │ │ │ ├── DatabaseTransactionFeaturesTest.java │ │ │ └── HibernateMe.java │ │ ├── events │ │ │ ├── ZiggyEventHandlerTest.java │ │ │ └── ZiggyEventTest.java │ │ ├── logging │ │ │ ├── FileAppenderTest.java │ │ │ ├── TaskLogCreator.java │ │ │ └── ZiggyLogTest.java │ │ ├── messaging │ │ │ ├── HeartbeatManagerTest.java │ │ │ ├── MessagingTestUtils.java │ │ │ ├── RmiClientInstantiator.java │ │ │ ├── RmiInterProcessCommunicationTest.java │ │ │ ├── RmiIntraProcessCommunicationTest.java │ │ │ ├── RmiServerInstantiator.java │ │ │ ├── ZiggyMessengerTest.java │ │ │ ├── ZiggyRmiClientTest.java │ │ │ └── ZiggyRmiServerTest.java │ │ ├── metrics │ │ │ ├── DeltaMetricValueGeneratorTest.java │ │ │ └── MetricsFileParserTest.java │ │ └── process │ │ │ └── ExternalProcessTest.java │ │ ├── supervisor │ │ ├── PipelineInstanceManagerTest.java │ │ ├── PipelineSupervisorTest.java │ │ ├── TaskRequestHandlerLifecycleManagerTest.java │ │ └── WorkerTaskPriorityTest.java │ │ ├── ui │ │ ├── instances │ │ │ └── InstanceCostEstimateDialogTest.java │ │ ├── status │ │ │ └── WorkerStatusTableModelTest.java │ │ └── util │ │ │ └── HtmlBuilderTest.java │ │ ├── uow │ │ ├── DataReceiptUnitOfWorkGeneratorTest.java │ │ ├── DatastoreDirectoryUnitOfWorkTest.java │ │ ├── UnitOfWorkGeneratorTest.java │ │ └── UnitOfWorkTest.java │ │ ├── util │ │ ├── BuildInfoTest.java │ │ ├── ClasspathScannerTest.java │ │ ├── CollectionFiltersTest.java │ │ ├── HostNameUtilsTest.java │ │ ├── HumanReadableHeapSizeTest.java │ │ ├── IntegerFormatterTest.java │ │ ├── Iso8601FormatterTest.java │ │ ├── ReflectionUtilsTest.java │ │ ├── RegexBackslashManagerTest.java │ │ ├── RegexEditorTest.java │ │ ├── RegexGroupCounterTest.java │ │ ├── SystemProxyTest.java │ │ ├── TimeFormatterTest.java │ │ ├── TimeRangeTest.java │ │ ├── WrapperUtilsTest.java │ │ ├── ZiggyCollectionUtilsTest.java │ │ ├── ZiggyStringUtilsTest.java │ │ ├── ZiggyUtilsTest.java │ │ ├── dispmod │ │ │ ├── PipelineStatsDisplayModelTest.java │ │ │ └── TaskSummaryDisplayModelTest.java │ │ ├── io │ │ │ ├── LockManagerTest.java │ │ │ ├── RegexFileFilter.java │ │ │ └── ZiggyFileUtilsTest.java │ │ ├── os │ │ │ ├── CpuInfoTest.java │ │ │ ├── MemInfoTest.java │ │ │ ├── OperatingSystemTypeTest.java │ │ │ ├── ProcInfoTest.java │ │ │ ├── ProcessUtilsTest.java │ │ │ └── ProcessUtilsTestProgram.java │ │ └── pojo │ │ │ ├── FieldAccessException.java │ │ │ ├── FieldNameException.java │ │ │ ├── GetterSetterExistenceException.java │ │ │ ├── GetterSetterNameException.java │ │ │ ├── GetterSetterTypeException.java │ │ │ ├── GetterSetterValueException.java │ │ │ ├── PojoTest.java │ │ │ └── PojoTestTest.java │ │ └── worker │ │ └── PipelineWorkerTest.java │ └── matlab │ └── ZiggyErrorWriterTest.m └── test ├── data ├── datastore-update.xml ├── invalid-pipeline-definition.xml ├── m.tar ├── memdrone-r190i1n5.txt.gz ├── node.xml ├── pbs-log-comment-and-status ├── pbs-log-status-no-comment.txt ├── pd-bad-node-param-sets.xml ├── pd-bad-pipeline-param-sets.xml ├── pd-event.xml ├── pd-four-default-param-sets.xml ├── pd-hyperion-pipeline-only.xml ├── pd-hyperion-update.xml ├── pd-hyperion.xml ├── pd-test-1.xml ├── pd-test-2.xml ├── pd-test-invalid-type.xml ├── pe-test.xml ├── pipeline-definition.xml ├── pl-event.xml ├── pl-four-default-param-sets.xml ├── pl-hyperion.xml ├── pl-override-bad-type.xml ├── pl-override-new-param-set.xml ├── pl-overrides.xml ├── pl-replacement-param-sets.xml ├── pt-event.xml ├── pt-hyperion.xml ├── qs.csv ├── step1.xml ├── step2.xml └── test.xml ├── etc ├── envvar.ziggy.properties └── sysprop.ziggy.properties └── procedures ├── ZiggySamplePipelineTest-01.out ├── ZiggySamplePipelineTest-01.sh ├── runZiggyTest └── runZiggyTests /.github/workflows/manual.yml: -------------------------------------------------------------------------------- 1 | # This is a basic workflow that is manually triggered 2 | 3 | name: Manual workflow 4 | 5 | # Controls when the action will run. Workflow runs when manually triggered using the UI 6 | # or API. 7 | on: 8 | workflow_dispatch: 9 | 10 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel. 11 | jobs: 12 | Validate-CITATION-cff: 13 | name: Validate CITATION.cff 14 | runs-on: ubuntu-latest 15 | env: 16 | GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} 17 | steps: 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | - name: cff-validator 21 | uses: dieghernan/cff-validator@v2.3 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | **/.gradle* 2 | **/__pycache__ 3 | **/build 4 | *.egg-info 5 | *.mexmaci64 6 | .classpath 7 | .cproject 8 | .factorypath 9 | .idea 10 | .project 11 | .pydevproject 12 | .settings 13 | outside 14 | src/main/resources/ziggy-build.properties 15 | src/test/cpp/ExternalProcess/testprog.o 16 | -------------------------------------------------------------------------------- /LICENSE.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/LICENSE.pdf -------------------------------------------------------------------------------- /buildSrc/gradle.properties: -------------------------------------------------------------------------------- 1 | ../gradle.properties -------------------------------------------------------------------------------- /buildSrc/settings.gradle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/buildSrc/settings.gradle -------------------------------------------------------------------------------- /buildSrc/src/main/sh/macosx-sdk-selection.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | 4 | # Get the current OS version number 5 | 6 | macosx_version=`uname -r` 7 | 8 | # depending on the version number, we need to set the SDK-related variables differently: 9 | 10 | case $macosx_version in 11 | 14*) 12 | SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/' 13 | MACOSX_DEPLOYMENT_TARGET='10.10' 14 | ;; 15 | 13*) 16 | SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/' 17 | MACOSX_DEPLOYMENT_TARGET='10.9' 18 | ;; 19 | 12*) 20 | SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/' 21 | MACOSX_DEPLOYMENT_TARGET='10.8' 22 | ;; 23 | 11*) 24 | SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/' 25 | MACOSX_DEPLOYMENT_TARGET='10.7' 26 | ;; 27 | *) 28 | SDKROOT='/Developer/SDKs/MacOSX10.6.sdk' 29 | MACOSX_DEPLOYMENT_TARGET='10.6' 30 | ;; 31 | esac 32 | -------------------------------------------------------------------------------- /buildSrc/src/test/java/gov/nasa/ziggy/buildutil/SystemArchitectureTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.buildutil; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | import org.mockito.Mockito; 7 | 8 | import gov.nasa.ziggy.buildutil.SystemArchitecture.Selector; 9 | 10 | /** 11 | * Unit tests for {@link SystemArchitecture} class. 12 | * 13 | * @author PT 14 | */ 15 | public class SystemArchitectureTest { 16 | 17 | @Test 18 | public void testSelector() { 19 | 20 | Selector selectorSpy = Mockito.spy(SystemArchitecture.selector(String.class)); 21 | Mockito.doReturn(SystemArchitecture.LINUX_INTEL).when(selectorSpy).architecture(); 22 | selectorSpy.linuxIntelObject("A").macIntelObject("B").macM1Object("C"); 23 | assertEquals("A", selectorSpy.get()); 24 | Mockito.doReturn(SystemArchitecture.MAC_INTEL).when(selectorSpy).architecture(); 25 | assertEquals("B", selectorSpy.get()); 26 | Mockito.doReturn(SystemArchitecture.MAC_M1).when(selectorSpy).architecture(); 27 | assertEquals("C", selectorSpy.get()); 28 | } 29 | 30 | @Test 31 | public void testFastSelectorSyntax() { 32 | SystemArchitecture.selector(String.class) 33 | .linuxIntelObject("A") 34 | .macIntelObject("B") 35 | .macM1Object("C") 36 | .get(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /buildSrc/src/test/resources/gov/nasa/tess/buildutil/processed-jaxb.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /buildSrc/src/test/resources/gov/nasa/tess/buildutil/raw-jaxb-generated.xsd: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /doc/NPR-7150.2/Ziggy-NPR7150.2C.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/NPR-7150.2/Ziggy-NPR7150.2C.xlsx -------------------------------------------------------------------------------- /doc/legal/NASA-Corporate-CLA.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/legal/NASA-Corporate-CLA.pdf -------------------------------------------------------------------------------- /doc/legal/NASA-Individual-CLA.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/legal/NASA-Individual-CLA.pdf -------------------------------------------------------------------------------- /doc/section-508/Ziggy-Section-508-Checklist.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/section-508/Ziggy-Section-508-Checklist.docx -------------------------------------------------------------------------------- /doc/settings.gradle: -------------------------------------------------------------------------------- 1 | include 'hdf5-module-interface' 2 | include 'datastore' 3 | -------------------------------------------------------------------------------- /doc/user-manual/contact-us.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [[Previous]](advanced-uow.md) 4 | [[Up]](user-manual.md) 5 | [[Next]](properties.md) 6 | 7 | ## Contact Us 8 | 9 | If you have problems with Ziggy, or suggestions for improving Ziggy, please create an Issue. 10 | 11 | If you have implemented fixes to those problems and improvements, then please submit a Pull request. You must have a [Corporate](../legal/NASA-Corporate-CLA.pdf) or [Individual](../legal/NASA-Individual-CLA.pdf) Contributor License Agreement in place before we can accept it. 12 | 13 | If you just want to send an email, we are: 14 | 15 | Peter Tenenbaum (but you can call him PT)
16 | Bill Wohler 17 | 18 | [[Previous]](advanced-uow.md) 19 | [[Up]](user-manual.md) 20 | [[Next]](properties.md) 21 | -------------------------------------------------------------------------------- /doc/user-manual/data-receipt-display.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [[Previous]](data-receipt-execution.md) 4 | [[Up]](data-receipt.md) 5 | [[Next]](event-handler.md) 6 | 7 | ## Data Receipt Display 8 | 9 | The console has the ability to display data receipt activities. Select the `Data Receipt` content menu item. You'll see something like this: 10 | 11 | 12 | 13 | Double-clicking a row in the table brings up a display of all the files in the dataset: 14 | 15 | 16 | 17 | Note that the file names are the datastore names. 18 | 19 | [[Previous]](data-receipt-execution.md) 20 | [[Up]](data-receipt.md) 21 | [[Next]](event-handler.md) 22 | -------------------------------------------------------------------------------- /doc/user-manual/data-receipt.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [[Previous]](hpc-cost.md) 4 | [[Up]](user-manual.md) 5 | [[Next]](data-receipt-execution.md) 6 | 7 | ## Data Receipt 8 | 9 | In [the article on pipelines and nodes](pipelines-and-nodes.md), we mentioned that Ziggy has a special-purpose pipeline step, Data Receipt, that imports data and models into the datastore and which is the only pipeline step the user doesn't need to define. In [the article on starting a pipeline](start-pipeline.md), we led you through starting the sample pipeline, which starts with the data receipt step. 10 | 11 | So far, so good. However, you've probably noticed that at no point have we told you enough about the details of data receipt for you to feel comfortable putting it into a pipeline of your own. 12 | 13 | Let's fix that now. 14 | 15 | ### [Data Receipt Execution Flow](data-receipt-execution.md) 16 | 17 | This article covers the details of manifests, validation, the data receipt directory, and much, much more. 18 | 19 | ### [Data Receipt Display](data-receipt-display) 20 | 21 | Ziggy provides a panel on the console that shows all of data receipt's activities going back to the beginning of time. 22 | 23 | [[Previous]](hpc-cost.md) 24 | [[Up]](user-manual.md) 25 | [[Next]](data-receipt-execution.md) 26 | -------------------------------------------------------------------------------- /doc/user-manual/images/architecture-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/architecture-diagram.png -------------------------------------------------------------------------------- /doc/user-manual/images/data-receipt-display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/data-receipt-display.png -------------------------------------------------------------------------------- /doc/user-manual/images/data-receipt-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/data-receipt-list.png -------------------------------------------------------------------------------- /doc/user-manual/images/datastore-display-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/datastore-display-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/datastore-display-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/datastore-display-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/disable-reprocess.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/disable-reprocess.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-array-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-array-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-array-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-array-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-datastore-regexp-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-datastore-regexp-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-datastore-regexp-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-datastore-regexp-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-param-set.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-param-set.png -------------------------------------------------------------------------------- /doc/user-manual/images/edit-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/edit-pipeline.png -------------------------------------------------------------------------------- /doc/user-manual/images/event-handler-display-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/event-handler-display-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/event-handler-instances-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/event-handler-instances-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/event-handler-instances-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/event-handler-instances-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/event-handler-tasks-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/event-handler-tasks-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/event-handler-tasks-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/event-handler-tasks-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/exception-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/exception-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/flip-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/flip-tasks.png -------------------------------------------------------------------------------- /doc/user-manual/images/gui-start-end-adjusted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/gui-start-end-adjusted.png -------------------------------------------------------------------------------- /doc/user-manual/images/gui.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/gui.png -------------------------------------------------------------------------------- /doc/user-manual/images/halt-alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/halt-alert.png -------------------------------------------------------------------------------- /doc/user-manual/images/halt-in-progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/halt-in-progress.png -------------------------------------------------------------------------------- /doc/user-manual/images/halt-task-menu-item.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/halt-task-menu-item.png -------------------------------------------------------------------------------- /doc/user-manual/images/hpc-cost-est.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/hpc-cost-est.png -------------------------------------------------------------------------------- /doc/user-manual/images/instances-running.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/instances-running.png -------------------------------------------------------------------------------- /doc/user-manual/images/logs-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/logs-list.png -------------------------------------------------------------------------------- /doc/user-manual/images/monitor-processes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/monitor-processes.png -------------------------------------------------------------------------------- /doc/user-manual/images/monitoring-alerts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/monitoring-alerts.png -------------------------------------------------------------------------------- /doc/user-manual/images/monitoring-worker-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/monitoring-worker-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/monitoring-worker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/monitoring-worker.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-import-dialog-box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-import-dialog-box.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-lib-all-groups-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-lib-all-groups-expanded.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-lib-context-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-lib-context-menu.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-lib-group-assigned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-lib-group-assigned.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-lib-modified.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-lib-modified.png -------------------------------------------------------------------------------- /doc/user-manual/images/param-lib-used.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/param-lib-used.png -------------------------------------------------------------------------------- /doc/user-manual/images/parameter-library.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/parameter-library.png -------------------------------------------------------------------------------- /doc/user-manual/images/permuter-tasks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/permuter-tasks.png -------------------------------------------------------------------------------- /doc/user-manual/images/pipeline-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/pipeline-done.png -------------------------------------------------------------------------------- /doc/user-manual/images/pipelines-config-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/pipelines-config-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/pipelines-config-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/pipelines-config-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/pipelines-panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/pipelines-panel.png -------------------------------------------------------------------------------- /doc/user-manual/images/remote-dialog-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/remote-dialog-1.png -------------------------------------------------------------------------------- /doc/user-manual/images/remote-dialog-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/remote-dialog-2.png -------------------------------------------------------------------------------- /doc/user-manual/images/remote-dialog-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/remote-dialog-3.png -------------------------------------------------------------------------------- /doc/user-manual/images/resources-initial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/resources-initial.png -------------------------------------------------------------------------------- /doc/user-manual/images/resources-updated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/resources-updated.png -------------------------------------------------------------------------------- /doc/user-manual/images/restart-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/restart-dialog.png -------------------------------------------------------------------------------- /doc/user-manual/images/select-group-dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/select-group-dialog.png -------------------------------------------------------------------------------- /doc/user-manual/images/select-group-with-test-group.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/select-group-with-test-group.png -------------------------------------------------------------------------------- /doc/user-manual/images/start-end-nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/start-end-nodes.png -------------------------------------------------------------------------------- /doc/user-manual/images/start-pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/start-pipeline.png -------------------------------------------------------------------------------- /doc/user-manual/images/task-log-display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/task-log-display.png -------------------------------------------------------------------------------- /doc/user-manual/images/task-log-showing-problem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/task-log-showing-problem.png -------------------------------------------------------------------------------- /doc/user-manual/images/tasks-done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/tasks-done.png -------------------------------------------------------------------------------- /doc/user-manual/images/tasks-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/tasks-menu.png -------------------------------------------------------------------------------- /doc/user-manual/images/ziggy-small-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/doc/user-manual/images/ziggy-small-clear.png -------------------------------------------------------------------------------- /doc/user-manual/intermediate-topics.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [[Previous]](datastore-regexp.md) 4 | [[Up]](user-manual.md) 5 | [[Next]](datastore-task-dir.md) 6 | 7 | ## Intermediate Topics 8 | 9 | Now that you've [successfully run a pipeline](start-pipeline.md), there are some other things you should look at before we move on to what happens when things don't go quite as well. 10 | 11 | ### [The Datastore and the Task Directory](datastore-task-dir.md) 12 | 13 | The permanent, and temporary, storage areas for data and other files. 14 | 15 | ### [Setting up a Relational Database Management System (RDBMS)](rdbms.md) 16 | 17 | How to give Ziggy the database it needs for managing its information. 18 | 19 | [[Previous]](datastore-regexp.md) 20 | [[Up]](user-manual.md) 21 | [[Next]](datastore-task-dir.md) 22 | -------------------------------------------------------------------------------- /doc/user-manual/ziggy-gui-troubleshooting.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | [[Previous]](log-files.md) 4 | [[Up]](user-manual.md) 5 | [[Next]](monitoring.md) 6 | 7 | ## Using the Ziggy Console, Part 2: Troubleshooting 8 | 9 | Here are some articles on things you can use the Ziggy console for that relate to troubleshooting and recovery from problems. 10 | 11 | ### [Status Panel](monitoring.md) 12 | 13 | There's a whole bunch of stuff you can see on the `Status` panel. 14 | 15 | ### [Alerts Panel](alerts.md) 16 | 17 | When things happen that the operator should know about, they show up at the `Alerts` panel. 18 | 19 | ### [Log Files Display](display-logs.md) 20 | 21 | For any given task you can display the task's log files directly from the console. 22 | 23 | ### [Re-Run or Resume a Failed Task](rerun-task.md) 24 | 25 | Ziggy also gives you options when you've decided what you want to do about a failed task. 26 | 27 | ### [Halting Tasks](halt-tasks.md) 28 | 29 | You can stop a job or two if necessary. 30 | 31 | [[Previous]](log-files.md) 32 | [[Up]](user-manual.md) 33 | [[Next]](monitoring.md) 34 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | buildType = release 2 | org.gradle.color.error = RED 3 | org.gradle.daemon = true 4 | org.gradle.jvmargs = -Xms256m -Xmx2048m 5 | org.gradle.parallel = true 6 | 7 | // The version is updated when the first release candidate is created 8 | // while following Release Branches in Appendix C of the SMP, Git 9 | // Workflow. This property is used when publishing Ziggy. 10 | version = 0.9.0 11 | 12 | // The Maven group for the published Ziggy libraries. 13 | group = gov.nasa 14 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /licenses/HDF5_110121.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/licenses/HDF5_110121.PDF -------------------------------------------------------------------------------- /licenses/com.jgoodies--jgoodies-forms--1.9.x: -------------------------------------------------------------------------------- 1 | Copyright 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 10 | -------------------------------------------------------------------------------- /licenses/com.jgoodies--jgoodies-looks--2.7.x: -------------------------------------------------------------------------------- 1 | Copyright 2 | 3 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 4 | 5 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 6 | 7 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 8 | 9 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 10 | -------------------------------------------------------------------------------- /licenses/org.jsoup--jsoup--1.16.x: -------------------------------------------------------------------------------- 1 | jsoup License 2 | The jsoup code-base (including source and compiled packages) are 3 | distributed under the open source MIT license as described below. 4 | 5 | The MIT License 6 | Copyright © 2009 - 2023 Jonathan Hedley (https://jsoup.org/) 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining 9 | a copy of this software and associated documentation files (the 10 | "Software"), to deal in the Software without restriction, including 11 | without limitation the rights to use, copy, modify, merge, publish, 12 | distribute, sublicense, and/or sell copies of the Software, and to 13 | permit persons to whom the Software is furnished to do so, subject to 14 | the following conditions: 15 | 16 | The above copyright notice and this permission notice shall be 17 | included in all copies or substantial portions of the Software. 18 | 19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 20 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 22 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 23 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 24 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 25 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 26 | -------------------------------------------------------------------------------- /licenses/org.mockito--mockito-core--3.12.x: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2007 Mockito contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /licenses/org.postgresql--postgresql--9.4-1201-jdbc4: -------------------------------------------------------------------------------- 1 | This is a template license. The body of the license starts at the end of this paragraph. To use it, say that it is The PostgreSQL License, and then substitute the copyright year and name of the copyright holder into the body of the license. Then put the license into a prominent file ("COPYRIGHT", "LICENSE" or "COPYING" are common names for this file) in your software distribution. 2 | 3 | Copyright (c) $YEAR, $ORGANIZATION 4 | 5 | Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. 6 | 7 | IN NO EVENT SHALL $ORGANISATION BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF $ORGANISATION HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 8 | 9 | $ORGANISATION SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND $ORGANISATION HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 10 | -------------------------------------------------------------------------------- /sample-pipeline/clean-env.sh: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | # 3 | # Shell script that tears down the Python environment for the sample pipeline. 4 | # 5 | # The environment variable PIPELINE_CONFIG_PATH contains the path to 6 | # the pipeline configuration file. This script uses that path to 7 | # derive all the paths it needs. 8 | # 9 | # Author: PT 10 | # Author: Bill Wohler 11 | 12 | etc_dir="$(dirname "$PIPELINE_CONFIG_PATH")" 13 | sample_root="$(dirname "$etc_dir")" 14 | sample_home=$sample_root/build 15 | 16 | chmod -R u+w $sample_home 17 | rm -rf $sample_home 18 | -------------------------------------------------------------------------------- /sample-pipeline/data/sample-pipeline-manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /sample-pipeline/data/set-1/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-1/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-1/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-1/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-1/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-1/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-1/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-1/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-2/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-2/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-2/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-2/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-2/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-2/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/data/set-2/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/data/set-2/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/etc/ziggy-extra.d/pl-with-overrides.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /sample-pipeline/etc/ziggy.d/sample-remote-environment.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 9 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/sample-1-pipeline-manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-3/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-1/set-4/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/sample-2-pipeline-manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-5/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-2/set-6/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/sample-3-pipeline-manifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-7/L0/nasa-logo-file-3.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-0.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-1.png -------------------------------------------------------------------------------- /sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/multi-data/sample-3/set-8/L0/nasa-logo-file-2.png -------------------------------------------------------------------------------- /sample-pipeline/src/main/python/sample_pipeline/major_tom/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/sample-pipeline/src/main/python/sample_pipeline/major_tom/__init__.py -------------------------------------------------------------------------------- /sample-pipeline/src/main/python/sample_pipeline/setup.py: -------------------------------------------------------------------------------- 1 | from setuptools import setup 2 | 3 | # Ordinarily the right way to configure this would be to add ziggytools to the 4 | # install_requires list. Unfortunately, I haven't figured out how to install one 5 | # local package that depends on another local package: there doesn't seem to be 6 | # an obvious way to tell pip where to look. 7 | setup( 8 | name='sample_pipeline', 9 | version='0.9.0', 10 | packages=['major_tom'], 11 | url='', 12 | license='', 13 | author='PT', 14 | author_email='peter.tenenbaum@nasa.gov', 15 | install_requires=['Pillow', 'numpy'], 16 | description='Python packages used by Ziggy\'s sample pipeline' 17 | ) 18 | -------------------------------------------------------------------------------- /script-plugins/misc.gradle: -------------------------------------------------------------------------------- 1 | // Show all dependencies. 2 | task allDeps(type: DependencyReportTask) {} 3 | 4 | def gitVersionProvider = providers.exec { 5 | commandLine "git", "rev-parse", "HEAD" 6 | } 7 | 8 | task ziggyVersion(type: JavaExec) { 9 | inputs.property "ziggyVersion", gitVersionProvider.standardOutput.asText.get().trim() 10 | outputs.file "$buildDir/etc/ziggy-build.properties" 11 | classpath = sourceSets.main.runtimeClasspath 12 | mainClass = "gov.nasa.ziggy.util.BuildInfo" 13 | args = ["--prefix", "ziggy", "--home", "$buildDir"] 14 | } 15 | 16 | integrationTest.dependsOn ziggyVersion 17 | assemble.dependsOn ziggyVersion 18 | 19 | clean.doFirst() { 20 | File supervisorPidFile = new File("$buildDir/bin/supervisor.pid"); 21 | if (supervisorPidFile.isFile()) { 22 | throw new GradleException("Can't clean while cluster is running (run \"ziggy cluster stop\" to clear build/bin/supervisor.pid)") 23 | } 24 | } 25 | 26 | // Some tests create readonly directories. Make them writable so they can be deleted. 27 | task fixTestPermissions(type : Exec) { 28 | onlyIf { file("$buildDir/test").exists() } 29 | 30 | commandLine "chmod", "-R", "u+wx", "$buildDir/test" 31 | } 32 | 33 | clean.dependsOn fixTestPermissions 34 | -------------------------------------------------------------------------------- /script-plugins/xlint.gradle: -------------------------------------------------------------------------------- 1 | allprojects { 2 | gradle.projectsEvaluated { 3 | tasks.withType(JavaCompile) { 4 | options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /script-plugins/xml-schemas.gradle: -------------------------------------------------------------------------------- 1 | // Generate XML schemas. 2 | task generateXmlSchemas(type: JavaExec, dependsOn: copyLibs) { 3 | outputs.dir "$projectDir/build/schema/xml" 4 | 5 | mainClass.set("gov.nasa.ziggy.pipeline.xml.XmlSchemaExporter") 6 | classpath files(sourceSets.main.runtimeClasspath) 7 | jvmArgs "-Djava.library.path=$outsideDir/lib" 8 | } 9 | 10 | test.dependsOn generateXmlSchemas 11 | integrationTest.dependsOn generateXmlSchemas 12 | assemble.dependsOn generateXmlSchemas 13 | -------------------------------------------------------------------------------- /script-plugins/ziggy-libraries.gradle: -------------------------------------------------------------------------------- 1 | // Build the libziggy shared object. 2 | import gov.nasa.ziggy.buildutil.ZiggyCpp 3 | import gov.nasa.ziggy.buildutil.ZiggyCppMex 4 | 5 | task buildLibZiggy(type: ZiggyCpp) { 6 | outputName = "ziggy" 7 | outputType = "static" 8 | sourceFilePaths = ["$projectDir/src/main/cpp/libziggy"] 9 | includeFilePaths = ["$projectDir/src/main/cpp/libziggy"] 10 | 11 | logging.captureStandardError LogLevel.INFO 12 | } 13 | 14 | assemble.dependsOn buildLibZiggy 15 | 16 | // Build the libziggymi shared object. 17 | task buildLibZiggyMi(type: ZiggyCpp, dependsOn: copyHdf5Inc) { 18 | outputName = "ziggymi" 19 | outputType = "static" 20 | sourceFilePaths = ["$projectDir/src/main/cpp/libziggymi"] 21 | includeFilePaths = ["$projectDir/src/main/cpp/libziggymi", "$projectDir/src/main/cpp/libziggy", 22 | "$buildDir/include"] 23 | 24 | logging.captureStandardError LogLevel.INFO 25 | } 26 | 27 | assemble.dependsOn buildLibZiggyMi 28 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = "ziggy" 2 | -------------------------------------------------------------------------------- /src/main/c/linux-cache-control.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #define DROP_CACHE_FILE "/proc/sys/vm/drop_caches" 9 | // echo 3 > /proc/sys/vm/drop_caches 10 | int main(int argc, char **argv) { 11 | 12 | int fd = open(DROP_CACHE_FILE, O_WRONLY); 13 | if (fd < 0) { 14 | char buf[255]; 15 | snprintf(buf, 255, "Error while opening %s\n", DROP_CACHE_FILE); 16 | perror(buf); 17 | return -1; 18 | } 19 | 20 | char dropLevel[] = "3\n"; 21 | ssize_t nBytesWritten = write(fd, dropLevel, 2); 22 | if (nBytesWritten != 2) { 23 | char buf[255]; 24 | snprintf(buf, 255, "Error while writing to %s\n", DROP_CACHE_FILE); 25 | perror(buf); 26 | close(fd); 27 | return -2; 28 | } 29 | close(fd); 30 | return 0; 31 | 32 | } 33 | 34 | -------------------------------------------------------------------------------- /src/main/cpp/libziggy/ziggy_exceptions.cpp: -------------------------------------------------------------------------------- 1 | #include "ziggy_exceptions.h" 2 | 3 | using namespace std; 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/cpp/libziggy/ziggy_signal_handler.h: -------------------------------------------------------------------------------- 1 | #ifndef _ziggy_signal_handler_h_ 2 | #define _ziggy_signal_handler_h_ 1 3 | 4 | #include "ziggy_exceptions.h" 5 | #include 6 | 7 | /** 8 | * This is the signal handler that gets registered using signal(). It's exposed here in case. 9 | * you don't want to use register_print_stack_on_signal() and want to register it yourself. 10 | * This function will attempt to cause the process to exit() upon completion. 11 | */ 12 | extern "C" void print_stack_trace_signal_handler(int32_t signalNumber); 13 | 14 | /** 15 | * Attempts to print a stack trace to standard error when one of the following signals is raised: 16 | * SIGABRT, SIGSEGV, SIGBUS, SIGILL, SIGFPE. 17 | */ 18 | extern "C" void register_print_stack_on_signal(); 19 | 20 | #endif //_ziggy_signal_handler_h_ 21 | 22 | -------------------------------------------------------------------------------- /src/main/cpp/libziggy/ziggy_signal_handler_cpp: -------------------------------------------------------------------------------- 1 | #include "ziggy_signal_handler.h" 2 | 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | 8 | static const char* signalToStr(uint32_t signalNumber) { 9 | switch (signalNumber) { 10 | case SIGABRT: return "SIGABRT"; 11 | case SIGSEGV: return "SIGSEGV"; 12 | case SIGBUS: return "SIGBUS"; 13 | case SIGILL: return "SIGILL"; 14 | case SIGFPE: return "SIGFPE"; 15 | default: 16 | return "unknown signal"; 17 | } 18 | } 19 | 20 | extern "C" void print_stack_trace_signal_handler(int32_t signalNumber) { 21 | cerr << "Caught signal " << signalToStr(signalNumber) << "; attempting to print stack trace..." << endl; 22 | RUN_TIME_STACK_TRACE 23 | exit(-1); 24 | //return -1; 25 | } 26 | 27 | extern "C" void register_print_stack_on_signal() { 28 | cerr << "Registering signal handlers" << endl; 29 | 30 | signal(SIGABRT, print_stack_trace_signal_handler); 31 | signal(SIGSEGV, print_stack_trace_signal_handler); 32 | signal(SIGBUS, print_stack_trace_signal_handler); 33 | signal(SIGILL, print_stack_trace_signal_handler); 34 | signal(SIGFPE, print_stack_trace_signal_handler); 35 | 36 | cerr << "DONE Registering signal handlers" << endl; 37 | } 38 | 39 | -------------------------------------------------------------------------------- /src/main/cpp/libziggymi/IOHandler.h: -------------------------------------------------------------------------------- 1 | #ifndef IOHANDLER_H_ 2 | #define IOHANDLER_H_ 3 | 4 | #include 5 | 6 | #include 7 | 8 | /** 9 | * Deserilizes Persistable inputs and serializes Persitable outputs. 10 | * 11 | * @author Todd Klaus 12 | */ 13 | class IOHandler { 14 | public: 15 | 16 | IOHandler(const std::string& dir, const std::string& binaryName); 17 | 18 | virtual ~IOHandler() { 19 | } 20 | 21 | void loadInputs(Persistable& inputs) const; 22 | void saveOutputs(Persistable& outputs) const; 23 | static bool fileExists(const std::string& name) ; 24 | 25 | private: 26 | std::string dir; 27 | std::string binaryName; 28 | std::string inputFilename; 29 | std::string outputFilename; 30 | }; 31 | 32 | #endif /*IOHANDLER_H_*/ 33 | -------------------------------------------------------------------------------- /src/main/cpp/libziggymi/Persistable.h: -------------------------------------------------------------------------------- 1 | #ifndef PERSISTABLE_H_ 2 | #define PERSISTABLE_H_ 3 | 4 | #include "hdf5.h" 5 | 6 | /** 7 | * This is the base class of persistables. Persistables objects that can be serialalized with the 8 | * persistable framework. 9 | */ 10 | 11 | class Persistable { 12 | public: 13 | 14 | Persistable() { 15 | }; 16 | 17 | virtual ~Persistable() { 18 | }; 19 | 20 | virtual void readHdf5(hid_t hdf5Id) = 0; 21 | virtual void writeHdf5(hid_t hdf5Id) const = 0; 22 | }; 23 | 24 | #endif /*PERSISTABLE_H_*/ 25 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/collections/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for Ziggy data operations that occur across arrays, lists, or 3 | * other collections of data objects. 4 | * 5 | * @author Bill Wohler 6 | * @author PT 7 | */ 8 | 9 | package gov.nasa.ziggy.collections; 10 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/crud/AbstractCrudInterface.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.crud; 2 | 3 | import java.util.Collection; 4 | import java.util.List; 5 | 6 | /** 7 | * @author Miles Cote 8 | */ 9 | public interface AbstractCrudInterface { 10 | 11 | ZiggyQuery createZiggyQuery(Class databaseClass, Class resultClass); 12 | 13 | ZiggyQuery createZiggyQuery(Class databaseClass); 14 | 15 | List list(ZiggyQuery query); 16 | 17 | R uniqueResult(ZiggyQuery query); 18 | 19 | void persist(Object o); 20 | 21 | void persist(Collection collection); 22 | 23 | Class componentClass(); 24 | 25 | default U finalize(U result) { 26 | return result; 27 | } 28 | 29 | default List finalize(List result) { 30 | return result; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/crud/Canonicalizable.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.crud; 2 | 3 | /** 4 | * A canonicalizable interface. Objects that implement this interface have the normal 5 | * {@link Object#toString()} method, of course, as well as a 6 | * {@link Canonicalizable#canonicalize(String)} method which returns a fully-qualified name for the 7 | * object. For example, database column names might return just the column name from 8 | * {@link Object#toString()}, but add the table name (or given alias) in 9 | * {@link Canonicalizable#canonicalize(String)}. 10 | *

11 | * This interface also contains a {@link Canonicalizable#getObjectClass()} method for returning the 12 | * class of the object or its value. For example, database queries need to quote strings. 13 | * 14 | * @author Bill Wohler 15 | */ 16 | public interface Canonicalizable { 17 | /** 18 | * Returns the canonical name for this object. 19 | * 20 | * @param alias if non-null, the implementation may use this as a replacement for a 21 | * table name, for example. 22 | * @return the canonical name. 23 | */ 24 | String canonicalize(String alias); 25 | 26 | /** 27 | * Returns the class of this object (or more typically its corresponding value). 28 | * 29 | * @return the object's class. 30 | */ 31 | Class getObjectClass(); 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/crud/SimpleCrud.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.crud; 2 | 3 | /** 4 | * A simple CRUD class that provides access to {@link AbstractCrud}. 5 | * 6 | * @author Bill Wohler 7 | */ 8 | public class SimpleCrud extends AbstractCrud { 9 | 10 | @Override 11 | public Class componentClass() { 12 | throw new UnsupportedOperationException( 13 | "SimpleCrud doesn't support any one particular class"); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/crud/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides generic, top-level tools for CRUD (Create, Retrieve, Update, Delete) classes. These are 3 | * the classes that Ziggy uses to interact with its relational database. 4 | * 5 | * @author Bill Wohler 6 | * @author PT 7 | */ 8 | 9 | package gov.nasa.ziggy.crud; 10 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/accounting/PipelineTaskRenderer.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.accounting; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | 5 | /** 6 | * Used to print out a PipelineTask for the DataAccountabilityReport. 7 | * 8 | * @author Sean McCauliff 9 | */ 10 | public interface PipelineTaskRenderer { 11 | String renderTask(PipelineTask task); 12 | 13 | /** 14 | * Renderer for task zero and things that are not tasks. 15 | * 16 | * @return 17 | */ 18 | String renderDefaultTask(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/accounting/SimpleTaskRenderer.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.accounting; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | 5 | /** 6 | * Writes out a pipeline task using uow.briefState(); 7 | * 8 | * @author Sean McCauliff 9 | */ 10 | public class SimpleTaskRenderer implements PipelineTaskRenderer { 11 | @Override 12 | public String renderTask(PipelineTask task) { 13 | return task.getUnitOfWork().briefState(); 14 | } 15 | 16 | @Override 17 | public String renderDefaultTask() { 18 | return "Data Receipt"; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/accounting/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for reporting on data accountability. Data accountability is the 3 | * traceability between inputs and outputs, such that for any given output it is possible to work 4 | * backwards and find all data, models, and parameters that were inputs to the production of those 5 | * outputs. Ziggy implements this by maintaining a database table of all data files in the 6 | * datastore. Each file in the table has the ID of its producer (pipeline task that produced it) 7 | * recorded, along with the IDs of all consumers of that file (pipeline tasks that used that file as 8 | * an input). 9 | *

10 | *

11 | * Data accountability for models uses a different mechanism, see the ModelRegistry class in 12 | * gov.nasa.ziggy.models. Similarly, parameter set accountability uses a system implemented in 13 | * gov.nasa.ziggy.parameters. 14 | *

15 | * 16 | * @author Bill Wohler 17 | * @author PT 18 | */ 19 | 20 | package gov.nasa.ziggy.data.accounting; 21 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/datastore/DatastoreCopier.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.datastore; 2 | 3 | import java.nio.file.Path; 4 | 5 | /** 6 | * Defines the copy operation used by {@link DatastoreFileManager}. 7 | * 8 | * @author PT 9 | */ 10 | public interface DatastoreCopier { 11 | 12 | void copy(Path src, Path dest); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/datastore/DatastoreNodeCrud.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.datastore; 2 | 3 | import java.util.HashMap; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import gov.nasa.ziggy.crud.AbstractCrud; 8 | 9 | public class DatastoreNodeCrud extends AbstractCrud { 10 | 11 | public Map retrieveNodesByFullPath() { 12 | Map nodesByFullPath = new HashMap<>(); 13 | List nodes = list(createZiggyQuery(DatastoreNode.class)); 14 | for (DatastoreNode node : nodes) { 15 | nodesByFullPath.put(node.getFullPath(), node); 16 | } 17 | return nodesByFullPath; 18 | } 19 | 20 | @Override 21 | public Class componentClass() { 22 | return DatastoreNode.class; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/datastore/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.data.datastore; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/management/DataFilePaths.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.management; 2 | 3 | import java.nio.file.Path; 4 | 5 | public class DataFilePaths { 6 | 7 | private final Path sourcePath; 8 | private final Path destinationPath; 9 | private Path datastorePath; 10 | 11 | public DataFilePaths(Path sourcePath, Path destinationPath) { 12 | this.sourcePath = sourcePath; 13 | this.destinationPath = destinationPath; 14 | } 15 | 16 | public void setDatastorePathToSource() { 17 | datastorePath = sourcePath; 18 | } 19 | 20 | public void setDatastorePathToDestination() { 21 | datastorePath = destinationPath; 22 | } 23 | 24 | public Path getSourcePath() { 25 | return sourcePath; 26 | } 27 | 28 | public Path getDestinationPath() { 29 | return destinationPath; 30 | } 31 | 32 | public Path getDatastorePath() { 33 | return datastorePath; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/management/DataReceiptFile.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.management; 2 | 3 | /** 4 | * Contains summary information on a single file that was either successfully imported or which 5 | * failed to import correctly. 6 | * 7 | * @author PT 8 | */ 9 | public class DataReceiptFile { 10 | 11 | private long taskId; 12 | private String name; 13 | private String status; 14 | 15 | public DataReceiptFile(DatastoreProducerConsumer record) { 16 | name = record.getFilename(); 17 | taskId = record.getProducer(); 18 | status = "Imported"; 19 | } 20 | 21 | public DataReceiptFile(FailedImport record) { 22 | name = record.getFilename(); 23 | taskId = record.getDataReceiptTaskId(); 24 | status = "Failed"; 25 | } 26 | 27 | public long getTaskId() { 28 | return taskId; 29 | } 30 | 31 | public void setTaskId(long taskId) { 32 | this.taskId = taskId; 33 | } 34 | 35 | public String getName() { 36 | return name; 37 | } 38 | 39 | public void setName(String name) { 40 | this.name = name; 41 | } 42 | 43 | public String getStatus() { 44 | return status; 45 | } 46 | 47 | public void setStatus(String status) { 48 | this.status = status; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/management/DataReceiptInstance.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.management; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * Contains summary information for data receipt tasks within a single pipeline instance. 7 | * 8 | * @author PT 9 | */ 10 | public class DataReceiptInstance { 11 | 12 | private long instanceId; 13 | private Date date; 14 | private int successfulImportCount; 15 | private int failedImportCount; 16 | 17 | public long getInstanceId() { 18 | return instanceId; 19 | } 20 | 21 | public void setInstanceId(long instanceId) { 22 | this.instanceId = instanceId; 23 | } 24 | 25 | public Date getDate() { 26 | return date; 27 | } 28 | 29 | public void setDate(Date date) { 30 | this.date = date; 31 | } 32 | 33 | public int getSuccessfulImportCount() { 34 | return successfulImportCount; 35 | } 36 | 37 | public void setSuccessfulImportCount(int successfulImportCount) { 38 | this.successfulImportCount = successfulImportCount; 39 | } 40 | 41 | public int getFailedImportCount() { 42 | return failedImportCount; 43 | } 44 | 45 | public void setFailedImportCount(int failedImportCount) { 46 | this.failedImportCount = failedImportCount; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/management/ManifestCrud.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.data.management; 2 | 3 | import gov.nasa.ziggy.crud.AbstractCrud; 4 | import gov.nasa.ziggy.crud.ZiggyQuery; 5 | 6 | /** 7 | * CRUD class for {@link Manifest} instances. 8 | * 9 | * @author PT 10 | */ 11 | public class ManifestCrud extends AbstractCrud { 12 | 13 | /** 14 | * Determines whether a given dataset ID has already been used. 15 | */ 16 | public boolean datasetIdExists(long datasetId) { 17 | ZiggyQuery query = createZiggyQuery(Manifest.class); 18 | query.column(Manifest_.datasetId).in(datasetId); 19 | return !list(query).isEmpty(); 20 | } 21 | 22 | /** 23 | * Retrieves the {@link Manifest} for a given pipeline task ID. 24 | */ 25 | public Manifest retrieveByTaskId(long taskId) { 26 | ZiggyQuery query = createZiggyQuery(Manifest.class); 27 | return uniqueResult(query.column(Manifest_.importTaskId).in(taskId)); 28 | } 29 | 30 | @Override 31 | public Class componentClass() { 32 | return Manifest.class; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/management/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for all datastore operations. The heart of the package is the 3 | * DataFileManager class, which has the main responsibility for identifying the datastore files 4 | * needed as inputs for a given pipeline task, providing them to the task directory, and later 5 | * collecting and persisting results from each task directory. The data management package also 6 | * handles data receipt (the initial import of data files into the datastore). The DataFileType 7 | * defines the regular expressions that allow the DataFileManager to identify a given file as 8 | * belonging to a specified data file type. 9 | * 10 | * @author Bill Wohler 11 | * @author PT 12 | */ 13 | 14 | package gov.nasa.ziggy.data.management; 15 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/data/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Contains data-related packages. 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.data; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/GlobalThreadMetrics.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics; 2 | 3 | import java.util.Objects; 4 | 5 | /** 6 | * Container for a global metric and a corresponding thread metric. 7 | * 8 | * @author PT 9 | */ 10 | class GlobalThreadMetrics { 11 | 12 | private final T globalMetric; 13 | private final T threadMetric; 14 | 15 | public GlobalThreadMetrics(T globalMetric, T threadMetric) { 16 | this.globalMetric = globalMetric; 17 | this.threadMetric = threadMetric; 18 | } 19 | 20 | public T getGlobalMetric() { 21 | return globalMetric; 22 | } 23 | 24 | public T getThreadMetric() { 25 | return threadMetric; 26 | } 27 | 28 | @Override 29 | public int hashCode() { 30 | return Objects.hash(globalMetric, threadMetric); 31 | } 32 | 33 | @Override 34 | public boolean equals(Object obj) { 35 | if (this == obj) { 36 | return true; 37 | } 38 | if (obj == null || getClass() != obj.getClass()) { 39 | return false; 40 | } 41 | GlobalThreadMetrics other = (GlobalThreadMetrics) obj; 42 | return Objects.equals(globalMetric, other.globalMetric) 43 | && Objects.equals(threadMetric, other.threadMetric); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/TimeAndPercentile.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics; 2 | 3 | import java.util.Objects; 4 | 5 | public class TimeAndPercentile { 6 | 7 | private final long timeMillis; 8 | private final double percent; 9 | 10 | public TimeAndPercentile(long timeMillis, double percent) { 11 | this.timeMillis = timeMillis; 12 | this.percent = percent; 13 | } 14 | 15 | public long getTimeMillis() { 16 | return timeMillis; 17 | } 18 | 19 | public double getPercent() { 20 | return percent; 21 | } 22 | 23 | @Override 24 | public int hashCode() { 25 | return Objects.hash(percent, timeMillis); 26 | } 27 | 28 | @Override 29 | public boolean equals(Object obj) { 30 | if (this == obj) { 31 | return true; 32 | } 33 | if (obj == null || getClass() != obj.getClass()) { 34 | return false; 35 | } 36 | TimeAndPercentile other = (TimeAndPercentile) obj; 37 | return Double.doubleToLongBits(percent) == Double.doubleToLongBits(other.percent) 38 | && timeMillis == other.timeMillis; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces that support measurement and tracking of pipeline performance 3 | * metrics (elapsed times, etc.). 4 | * 5 | * @author Bill Wohler 6 | * @author PT 7 | */ 8 | 9 | package gov.nasa.ziggy.metrics; 10 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/BytesFormat.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | public class BytesFormat implements Format { 6 | @Override 7 | public String format(double bytes) { 8 | long value = (long) bytes; 9 | 10 | if (value <= 0) { 11 | return "0"; 12 | } 13 | 14 | final String[] units = { "B", "KB", "MB", "GB", "TB" }; 15 | int digitGroups = (int) (Math.log10(value) / Math.log10(1024)); 16 | 17 | return new DecimalFormat("#,##0.#").format(value / Math.pow(1024, digitGroups)) + " " 18 | + units[digitGroups]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/BytesPerSecondFormat.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | import java.text.DecimalFormat; 4 | 5 | public class BytesPerSecondFormat implements Format { 6 | @Override 7 | public String format(double bytesPerSecond) { 8 | long value = (long) bytesPerSecond; 9 | 10 | if (value <= 0) { 11 | return "0"; 12 | } 13 | 14 | final String[] units = { "B/s", "KB/s", "MB/s", "GB/s", "TB/s" }; 15 | int digitGroups = (int) (Math.log10(value) / Math.log10(1024)); 16 | 17 | return new DecimalFormat("#,##0.#").format(value / Math.pow(1024, digitGroups)) + " " 18 | + units[digitGroups]; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/FloatFormat.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | public class FloatFormat implements Format { 4 | @Override 5 | public String format(double value) { 6 | return String.format("%.1f", value); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/Format.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | public interface Format { 4 | String format(double value); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/NodeIndexRange.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | import java.util.Objects; 4 | 5 | public class NodeIndexRange { 6 | 7 | private final int startNodeIndex; 8 | private final int endNodeIndex; 9 | 10 | public NodeIndexRange(int startNodeIndex, int endNodeIndex) { 11 | this.startNodeIndex = startNodeIndex; 12 | this.endNodeIndex = endNodeIndex; 13 | } 14 | 15 | public int getStartNodeIndex() { 16 | return startNodeIndex; 17 | } 18 | 19 | public int getEndNodeIndex() { 20 | return endNodeIndex; 21 | } 22 | 23 | @Override 24 | public int hashCode() { 25 | return Objects.hash(endNodeIndex, startNodeIndex); 26 | } 27 | 28 | @Override 29 | public boolean equals(Object obj) { 30 | if (this == obj) { 31 | return true; 32 | } 33 | if (obj == null || getClass() != obj.getClass()) { 34 | return false; 35 | } 36 | NodeIndexRange other = (NodeIndexRange) obj; 37 | return endNodeIndex == other.endNodeIndex && startNodeIndex == other.startNodeIndex; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/TimeMillisFormat.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | import org.apache.commons.lang3.time.DurationFormatUtils; 4 | 5 | public class TimeMillisFormat implements Format { 6 | @Override 7 | public String format(double timeMillis) { 8 | return DurationFormatUtils.formatDuration((long) timeMillis, "HH:mm:ss"); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/TopNListElement.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.metrics.report; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * @author Todd Klaus 7 | */ 8 | public class TopNListElement implements Serializable { 9 | private static final long serialVersionUID = 20230511L; 10 | 11 | private long value; 12 | private String label = null; 13 | private Object userData = null; 14 | 15 | public TopNListElement(long value, String label) { 16 | this.value = value; 17 | this.label = label; 18 | } 19 | 20 | public TopNListElement(long value, String label, Object userData) { 21 | this.value = value; 22 | this.label = label; 23 | this.userData = userData; 24 | } 25 | 26 | public long getValue() { 27 | return value; 28 | } 29 | 30 | public void setValue(long value) { 31 | this.value = value; 32 | } 33 | 34 | public String getLabel() { 35 | return label; 36 | } 37 | 38 | public void setLabel(String label) { 39 | this.label = label; 40 | } 41 | 42 | public Object getUserData() { 43 | return userData; 44 | } 45 | 46 | public void setUserData(Object userData) { 47 | this.userData = userData; 48 | } 49 | 50 | @Override 51 | public String toString() { 52 | return value + ""; 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/metrics/report/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces to generate reports based on performance metrics. 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.metrics.report; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for Ziggy operations on instrument models. Instrument models 3 | * generally represent information on the state of the instruments used to acquire the data 4 | * processed by Ziggy. Examples include calibration constants; values of position, velocity, 5 | * attitude, and/or pointing; descriptions of instrument geometry; etc. Ziggy provides version 6 | * control and data accountability for models used in data analysis. 7 | * 8 | * @author Bill Wohler 9 | * @author PT 10 | */ 11 | 12 | package gov.nasa.ziggy.models; 13 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces to define, configure, and run a Ziggy pipeline. 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/definition/HasExternalId.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.definition; 2 | 3 | /** 4 | * A database entity that has an externalId. 5 | * 6 | * @author Miles Cote 7 | */ 8 | public interface HasExternalId { 9 | /** 10 | * The default value to use when converting to export format. 11 | */ 12 | long NULL_DATA_SET_ID = 0; 13 | 14 | int externalId(); 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/definition/database/ComposedHasExternalIdCrud.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.definition.database; 2 | 3 | import java.util.List; 4 | 5 | import gov.nasa.ziggy.pipeline.definition.HasExternalId; 6 | 7 | /** 8 | * Contains data access operations for an object composed of elements. 9 | * 10 | * @author Miles Cote 11 | */ 12 | public interface ComposedHasExternalIdCrud 13 | extends HasExternalIdCrud { 14 | /** 15 | * Creates the element. 16 | */ 17 | void createElement(E e); 18 | 19 | /** 20 | * Retrieves the elements for the external id. 21 | */ 22 | List retrieveElements(int externalId); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/definition/database/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.pipeline.definition.database; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/definition/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.pipeline.definition; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.pipeline; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/AlgorithmLifecycle.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step; 2 | 3 | import java.io.File; 4 | 5 | public interface AlgorithmLifecycle { 6 | 7 | /** 8 | * Return the location of the task directory, which is guaranteed to exist. 9 | * 10 | * @return 11 | */ 12 | File getTaskDir(boolean cleanExisting); 13 | 14 | /** 15 | * Execute the algorithm either as a local executable or as a remote job 16 | * 17 | * @param inputs 18 | */ 19 | void executeAlgorithm(TaskConfiguration inputs); 20 | 21 | /** 22 | * Currently generateMemdroneCacheFiles() and doTaskFileCopy(). 23 | */ 24 | void doPostProcessing(); 25 | 26 | /** 27 | * Indicates whether the task is executing locally or remotely. 28 | * 29 | * @return 30 | */ 31 | boolean isRemote(); 32 | 33 | AlgorithmExecutor getExecutor(); 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/AlgorithmParameters.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | import java.util.Set; 6 | 7 | import gov.nasa.ziggy.pipeline.definition.ParameterSet; 8 | import gov.nasa.ziggy.pipeline.step.io.DatastoreDirectoryPipelineInputs; 9 | import gov.nasa.ziggy.util.io.Persistable; 10 | 11 | /** 12 | * Container class for algorithm parameters. The {@link DatastoreDirectoryPipelineInputs} class uses 13 | * a {@link AlgorithmParameters} instance to store all Parameters instances. This facilitates 14 | * special handling for same by the HDF5 algorithm interface infrastructure. 15 | * 16 | * @author PT 17 | */ 18 | public class AlgorithmParameters implements Persistable { 19 | 20 | private Map parameterSetsByName = new HashMap<>(); 21 | 22 | public Map getParameterSetsByName() { 23 | return parameterSetsByName; 24 | } 25 | 26 | public void addParameterSets(Set parameterSets) { 27 | Map newParameterSetsByName = ParameterSet 28 | .parameterSetByName(parameterSets); 29 | parameterSetsByName.putAll(newParameterSetsByName); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/hdf5/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for HDF5 communication. Ziggy uses HDF5 as its interchange format 3 | * for specifying inputs and outputs to algorithm processes. Arrays of primitives, Strings, and 4 | * enums are managed by instances of {@link gov.nasa.ziggy.pipeline.step.hdf5.PrimitiveHdf5Array}. 5 | * Arrays of more complex Java types are managed by instances of 6 | * {@link gov.nasa.ziggy.pipeline.step.hdf5.PersistableHdf5Array}. Pipeline step parameter sets are 7 | * managed by {@link gov.nasa.ziggy.pipeline.step.hdf5.AlgorithmParametersHdf5Array}. An instance of 8 | * PersistableHdf5Array can contain fields that are instances of PrimitiveHdf5Array, 9 | * AlgorithmParametersHdf5Array, or PersistableHdf5Array instances. In this way, the full data 10 | * hierarchy represented by a Java object can be translated to HDF5, and vice-versa. 11 | * 12 | * @author Bill Wohler 13 | * @author PT 14 | */ 15 | 16 | package gov.nasa.ziggy.pipeline.step.hdf5; 17 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/io/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for the interchange of information between Ziggy and algorithm 3 | * processes. Any Java class that is to be exchanged in the form of HDF5 files must implement the 4 | * {@link gov.nasa.ziggy.util.io.Persistable} interface. The 5 | * {@link gov.nasa.ziggy.util.io.ProxyIgnore} annotation allows a field in a Java class to be 6 | * skipped when reading and writing HDF5. 7 | * 8 | * @author Bill Wohler 9 | * @author PT 10 | */ 11 | 12 | package gov.nasa.ziggy.pipeline.step.io; 13 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/BatchParametersAggregator.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | import java.util.Collection; 4 | 5 | /** 6 | * Aggregates multiple instances of {@link BatchParameters} to determine resource needs for a 7 | * collection of pipeline tasks. 8 | * 9 | * @author PT 10 | */ 11 | public interface BatchParametersAggregator { 12 | 13 | T aggregate(Collection parametersInstances); 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/QueueTimeMetrics.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | import java.util.List; 4 | 5 | /** Provides metrics related to queue times. */ 6 | public interface QueueTimeMetrics { 7 | 8 | /** 9 | * Sets the collection of {@link Architecture}s that the queue time metrics implementation will 10 | * need to support (by which we mean, "The architectures we need to find queue time metrics 11 | * for"). 12 | */ 13 | void setArchitectures(List architectures); 14 | 15 | /** 16 | * Calculates the "runout," which is the time it would take to run all the jobs scheduled for a 17 | * given architecture. 18 | */ 19 | double queueDepthHours(Architecture architecture); 20 | 21 | /** 22 | * Calculates the "expansion" metric: the typical multiplicative factor between the requested 23 | * wall time and the time including time in queue, for a given architecture. 24 | */ 25 | double queueTimeFactor(Architecture architecture); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/RemoteEnvironmentCrud.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | import java.util.List; 4 | 5 | import gov.nasa.ziggy.crud.AbstractCrud; 6 | import gov.nasa.ziggy.crud.ZiggyQuery; 7 | 8 | public class RemoteEnvironmentCrud extends AbstractCrud { 9 | 10 | public List retrieveRemoteEnvironmentNames() { 11 | ZiggyQuery query = createZiggyQuery(RemoteEnvironment.class, 12 | String.class); 13 | query.column(RemoteEnvironment_.name).select(); 14 | return list(query); 15 | } 16 | 17 | public RemoteEnvironment retrieveRemoteEnvironment(String name) { 18 | ZiggyQuery query = createZiggyQuery( 19 | RemoteEnvironment.class); 20 | query.column(RemoteEnvironment_.name).in(name); 21 | return uniqueResult(query); 22 | } 23 | 24 | public List retrieveAllEnvironments() { 25 | return list(createZiggyQuery(RemoteEnvironment.class)); 26 | } 27 | 28 | @Override 29 | public Class componentClass() { 30 | return RemoteEnvironment.class; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/RemoteExecutionProperties.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | public class RemoteExecutionProperties { 4 | 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/batch/PbsBatchParametersAggregator.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote.batch; 2 | 3 | import java.util.Collection; 4 | 5 | import gov.nasa.ziggy.pipeline.step.remote.BatchParameters; 6 | import gov.nasa.ziggy.pipeline.step.remote.BatchParametersAggregator; 7 | 8 | public class PbsBatchParametersAggregator implements BatchParametersAggregator { 9 | 10 | @Override 11 | public PbsBatchParameters aggregate(Collection parametersInstances) { 12 | return PbsBatchParameters.aggregate(parametersInstances); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/remote/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.pipeline.step.remote; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/subtask/JavaSubtaskExecutor.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.subtask; 2 | 3 | import java.io.File; 4 | 5 | import gov.nasa.ziggy.pipeline.step.FatalAlgorithmProcessingException; 6 | 7 | /** 8 | * Subclass of {@link SubtaskExecutor} that provides additional support for Java algorithms. 9 | * 10 | * @author PT 11 | */ 12 | public class JavaSubtaskExecutor extends SubtaskExecutor { 13 | 14 | JavaSubtaskExecutor(File taskDir, int subtaskIndex, String binaryName, int timeoutSecs) { 15 | super(taskDir, subtaskIndex, binaryName, timeoutSecs); 16 | } 17 | 18 | @Override 19 | protected void initialize() { 20 | throw new FatalAlgorithmProcessingException("JavaSubtaskExecutor not yet supported"); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/subtask/SubtaskAllocation.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.subtask; 2 | 3 | import gov.nasa.ziggy.pipeline.step.subtask.SubtaskServer.ResponseType; 4 | 5 | public class SubtaskAllocation { 6 | private SubtaskServer.ResponseType status = SubtaskServer.ResponseType.OK; 7 | private int subtaskIndex = -1; 8 | 9 | public SubtaskAllocation(ResponseType status, int subtaskIndex) { 10 | this.status = status; 11 | this.subtaskIndex = subtaskIndex; 12 | } 13 | 14 | public SubtaskServer.ResponseType getStatus() { 15 | return status; 16 | } 17 | 18 | public int getSubtaskIndex() { 19 | return subtaskIndex; 20 | } 21 | 22 | @Override 23 | public String toString() { 24 | return "SubtaskAllocation [response=" + status + ", subtaskIndex=" + subtaskIndex + "]"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/step/subtask/SubtaskInformation.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.subtask; 2 | 3 | /** 4 | * Simple container for information on the subtasks within a given task / unit of work. 5 | * 6 | * @author PT 7 | */ 8 | public class SubtaskInformation { 9 | 10 | private final String pipelineStepName; 11 | private final String uowBriefState; 12 | private final int subtaskCount; 13 | 14 | public SubtaskInformation(String pipelineStepName, String uowBriefState, int subtaskCount) { 15 | this.pipelineStepName = pipelineStepName; 16 | this.uowBriefState = uowBriefState; 17 | this.subtaskCount = subtaskCount; 18 | } 19 | 20 | public String getPipelineStepName() { 21 | return pipelineStepName; 22 | } 23 | 24 | public String getUowBriefState() { 25 | return uowBriefState; 26 | } 27 | 28 | public int getSubtaskCount() { 29 | return subtaskCount; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/xml/HasXmlSchemaFilename.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.xml; 2 | 3 | /** 4 | * Defines a class for which Ziggy can generate a schema and perform unmarshalling validation of a 5 | * file against that schema. 6 | *

7 | * NB: If you add a new class that implements {@link HasXmlSchemaFilename}, you must add it to the 8 | * list of classes returned by {@link XmlSchemaExporter#schemaClasses()}. That will ensure that the 9 | * schema for the class is automatically generated at build time. 10 | * 11 | * @author PT 12 | */ 13 | public interface HasXmlSchemaFilename { 14 | 15 | /** 16 | * Filename of the XML schema for this class. 17 | */ 18 | String getXmlSchemaFilename(); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/pipeline/xml/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.pipeline.xml; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/alert/AlertLog.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.alert; 2 | 3 | import jakarta.persistence.Embedded; 4 | import jakarta.persistence.Entity; 5 | import jakarta.persistence.GeneratedValue; 6 | import jakarta.persistence.GenerationType; 7 | import jakarta.persistence.Id; 8 | import jakarta.persistence.SequenceGenerator; 9 | import jakarta.persistence.Table; 10 | 11 | /** 12 | * @author Todd Klaus 13 | */ 14 | @Entity 15 | @Table(name = "ziggy_AlertLog") 16 | public class AlertLog { 17 | @Id 18 | @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "ziggy_AlertLog_generator") 19 | @SequenceGenerator(name = "ziggy_AlertLog_generator", initialValue = 1, 20 | sequenceName = "ziggy_AlertLog_sequence", allocationSize = 1) 21 | private Long id; 22 | 23 | @Embedded 24 | private Alert alertData; 25 | 26 | /** 27 | * Default constructor for Hibernate use only. 28 | */ 29 | AlertLog() { 30 | } 31 | 32 | public AlertLog(Alert alertData) { 33 | this.alertData = alertData; 34 | } 35 | 36 | /** 37 | * @return the id 38 | */ 39 | public Long getId() { 40 | return id; 41 | } 42 | 43 | public Alert getAlertData() { 44 | return alertData; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/alert/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.alert; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/config/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.config; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/database/SqlDialect.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.database; 2 | 3 | /** 4 | * An enumeration of the types of databases supported by Ziggy. 5 | * 6 | * @see DatabaseController 7 | * @author Todd Klaus 8 | */ 9 | public enum SqlDialect { 10 | HSQLDB("org.hibernate.dialect.HSQLDialect"), 11 | // ORACLE("org.hibernate.dialect.OracleDialect"), 12 | POSTGRESQL("org.hibernate.dialect.PostgreSQLDialect"); 13 | 14 | private final String dialect; 15 | 16 | SqlDialect(String dstr) { 17 | dialect = dstr; 18 | } 19 | 20 | public String dialect() { 21 | return dialect; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/events/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for the Ziggy event handler. 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.events; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/logging/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.logging; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/AlertMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.services.alert.Alert; 4 | 5 | /** 6 | * Notifies message clients of a new {@link Alert}. 7 | * 8 | * @author PT 9 | */ 10 | public class AlertMessage extends PipelineMessage { 11 | private static final long serialVersionUID = 20230511L; 12 | 13 | private final Alert alertData; 14 | 15 | public AlertMessage(Alert alertData) { 16 | this.alertData = alertData; 17 | } 18 | 19 | public Alert getAlertData() { 20 | return alertData; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/AllJobsFinishedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | import gov.nasa.ziggy.pipeline.step.AlgorithmMonitor; 5 | import gov.nasa.ziggy.pipeline.step.TaskMonitor; 6 | 7 | /** 8 | * Message from the {@link AlgorithmMonitor} that notifies the {@link TaskMonitor} that all the 9 | * remote jobs for the task have finished. This is needed because remote jobs can exit silently, in 10 | * which case the task monitor doesn't know that nobody is processing task data any longer. 11 | * 12 | * @author PT 13 | * @author Bill Wohler 14 | */ 15 | public class AllJobsFinishedMessage extends PipelineMessage { 16 | 17 | private static final long serialVersionUID = 20240909L; 18 | 19 | private final PipelineTask pipelineTask; 20 | 21 | public AllJobsFinishedMessage(PipelineTask pipelineTask) { 22 | this.pipelineTask = pipelineTask; 23 | } 24 | 25 | public PipelineTask getPipelineTask() { 26 | return pipelineTask; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/EventHandlerRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.services.events.ZiggyEventHandler; 4 | import gov.nasa.ziggy.util.Requestor; 5 | 6 | /** 7 | * Requests that the supervisor send the UI the full list of {@link ZiggyEventHandler} instances. 8 | * 9 | * @author PT 10 | */ 11 | public class EventHandlerRequest extends SpecifiedRequestorMessage { 12 | 13 | private static final long serialVersionUID = 20230614L; 14 | 15 | public EventHandlerRequest(Requestor sender) { 16 | super(sender); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/HaltTasksRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import java.util.ArrayList; 4 | import java.util.Collection; 5 | import java.util.List; 6 | 7 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 8 | 9 | /** 10 | * Requests that the supervisor halt the selected tasks if they are waiting in the worker queue to 11 | * be processed, and then makes the same request of worker processes that are processing any of 12 | * these tasks. processes. The tasks are specified by task ID. 13 | * 14 | * @author PT 15 | * @author Bill Wohler 16 | */ 17 | public class HaltTasksRequest extends PipelineMessage { 18 | 19 | private static final long serialVersionUID = 20240913L; 20 | 21 | private final List pipelineTasks; 22 | 23 | public HaltTasksRequest(Collection pipelineTasks) { 24 | this.pipelineTasks = new ArrayList<>(pipelineTasks); 25 | } 26 | 27 | public List getPipelineTasks() { 28 | return pipelineTasks; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/HeartbeatCheckMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | public class HeartbeatCheckMessage extends PipelineMessage { 4 | 5 | private static final long serialVersionUID = 20231126L; 6 | 7 | private final long heartbeatTime; 8 | 9 | public HeartbeatCheckMessage(long heartbeatTime) { 10 | this.heartbeatTime = heartbeatTime; 11 | } 12 | 13 | public long getHeartbeatTime() { 14 | return heartbeatTime; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/NoRunningOrQueuedPipelinesMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.supervisor.PipelineSupervisor; 4 | 5 | /** 6 | * Message sent from the {@link PipelineSupervisor} to the console to indicate that all pipeline 7 | * running is done until such time as a fresh pipeline is started. The message has no content, its 8 | * arrival is all the information the receiver needs. 9 | * 10 | * @author PT 11 | */ 12 | public class NoRunningOrQueuedPipelinesMessage extends PipelineMessage { 13 | 14 | private static final long serialVersionUID = 20210318L; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/ParametersChangedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Message sent by the when parameter sets have been modified. This warns subscribers that they may 5 | * be holding out-of-date information and should decide what if anything they want to do about that. 6 | * 7 | * @author PT 8 | */ 9 | public class ParametersChangedMessage extends PipelineMessage { 10 | 11 | private static final long serialVersionUID = 20240530L; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/PipelineInstanceFinishedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Message sent when a pipeline instance is finished. 5 | * 6 | * @author Bill Wohler 7 | */ 8 | public class PipelineInstanceFinishedMessage extends PipelineMessage { 9 | 10 | private static final long serialVersionUID = 20241206L; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/PipelineInstanceStartedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Message sent when a pipeline instance is started. Note that this can applied when an existing 5 | * instance is restarted as well. 6 | * 7 | * @author PT 8 | */ 9 | public class PipelineInstanceStartedMessage extends PipelineMessage { 10 | 11 | private static final long serialVersionUID = 20241206L; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/RemoveTaskFromKilledTasksMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | import gov.nasa.ziggy.supervisor.PipelineSupervisor; 5 | import gov.nasa.ziggy.supervisor.TaskRequestHandlerLifecycleManager; 6 | 7 | /** 8 | * Message that tells the {@link TaskRequestHandlerLifecycleManager} in the 9 | * {@link PipelineSupervisor} that a task is restarting, so if it's in the list of tasks that were 10 | * killed previously, take it out of that list. 11 | * 12 | * @author PT 13 | * @author Bill Wohler 14 | */ 15 | public class RemoveTaskFromKilledTasksMessage extends PipelineMessage { 16 | 17 | private static final long serialVersionUID = 20240905L; 18 | 19 | private final PipelineTask pipelineTask; 20 | 21 | public RemoveTaskFromKilledTasksMessage(PipelineTask pipelineTask) { 22 | this.pipelineTask = pipelineTask; 23 | } 24 | 25 | public PipelineTask getPipelineTask() { 26 | return pipelineTask; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/RestartTasksRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import java.util.List; 4 | 5 | import gov.nasa.ziggy.pipeline.definition.PipelineStepExecutor.RunMode; 6 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 7 | 8 | /** 9 | * Notifies the supervisor that pipeline tasks should be restarted. 10 | * 11 | * @author PT 12 | * @author Bill Wohler 13 | */ 14 | public class RestartTasksRequest extends PipelineMessage { 15 | 16 | private static final long serialVersionUID = 20240909L; 17 | 18 | private final List pipelineTasks; 19 | private final boolean doTransitionOnly; 20 | private final RunMode runMode; 21 | 22 | public RestartTasksRequest(List pipelineTasks, boolean doTransitionOnly, 23 | RunMode runMode) { 24 | this.pipelineTasks = pipelineTasks; 25 | this.doTransitionOnly = doTransitionOnly; 26 | this.runMode = runMode; 27 | } 28 | 29 | public List getPipelineTasks() { 30 | return pipelineTasks; 31 | } 32 | 33 | public boolean isDoTransitionOnly() { 34 | return doTransitionOnly; 35 | } 36 | 37 | public RunMode getRunMode() { 38 | return runMode; 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/RetryTransitionRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineInstance; 4 | 5 | /** 6 | * Requests that the supervisor retry the transition for the given {@link PipelineInstance}. 7 | * 8 | * @author PT 9 | */ 10 | public class RetryTransitionRequest extends PipelineMessage { 11 | 12 | private static final long serialVersionUID = 20241106L; 13 | 14 | private final long pipelineInstanceId; 15 | 16 | public RetryTransitionRequest(long pipelineInstanceId) { 17 | this.pipelineInstanceId = pipelineInstanceId; 18 | } 19 | 20 | public long getPipelineInstanceId() { 21 | return pipelineInstanceId; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/RunningPipelinesCheckRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Message sent from the client to the supervisor requesting information on whether there are any 5 | * running pipeline instances or any instances that are waiting to run. There's no message content 6 | * other than the request itself. 7 | * 8 | * @author PT 9 | */ 10 | public class RunningPipelinesCheckRequest extends PipelineMessage { 11 | 12 | private static final long serialVersionUID = 20230511L; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/ShutdownMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * A message that notifies clients that the cluster is shutting down. 5 | * 6 | * @author PT 7 | */ 8 | public class ShutdownMessage extends PipelineMessage { 9 | 10 | private static final long serialVersionUID = 20230511L; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/SingleTaskLogMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Carries the contents of a single task log file to a requestor. 5 | * 6 | * @author PT 7 | */ 8 | public class SingleTaskLogMessage extends SpecifiedRequestorMessage { 9 | 10 | private static final long serialVersionUID = 20230614L; 11 | private final String taskLogContents; 12 | 13 | public SingleTaskLogMessage(SingleTaskLogRequest originalMessage, String taskLogContents) { 14 | super(originalMessage); 15 | this.taskLogContents = taskLogContents; 16 | } 17 | 18 | public String taskLogContents() { 19 | return taskLogContents; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/SingleTaskLogRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.services.logging.TaskLogInformation; 4 | import gov.nasa.ziggy.services.messaging.ZiggyMessenger; 5 | import gov.nasa.ziggy.util.Requestor; 6 | 7 | /** 8 | * Requests a single task log for display. 9 | * 10 | * @author PT 11 | */ 12 | public class SingleTaskLogRequest extends SpecifiedRequestorMessage { 13 | 14 | private static final long serialVersionUID = 20230614L; 15 | 16 | private final TaskLogInformation taskLogInformation; 17 | 18 | private SingleTaskLogRequest(Requestor sender, TaskLogInformation taskLogInformation) { 19 | super(sender); 20 | this.taskLogInformation = taskLogInformation; 21 | } 22 | 23 | public static void requestSingleTaskLog(Requestor sender, 24 | TaskLogInformation taskLogInformation) { 25 | ZiggyMessenger.publish(new SingleTaskLogRequest(sender, taskLogInformation)); 26 | } 27 | 28 | public TaskLogInformation getTaskLogInformation() { 29 | return taskLogInformation; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/StartMemdroneRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Requests that the memdrone shell script be started by the supervisor. This request is needed in 5 | * one use-case only: the case in which the console also requests that the supervisor restart failed 6 | * tasks. In all other cases, the supervisor or the remote nodes do not need this message to tell 7 | * them to start the shell script. 8 | * 9 | * @author PT 10 | */ 11 | public class StartMemdroneRequest extends PipelineMessage { 12 | private static final long serialVersionUID = 20250307L; 13 | 14 | private long instanceId; 15 | private String pipelineStepName; 16 | 17 | public StartMemdroneRequest(String pipelineStepName, long instanceId) { 18 | this.instanceId = instanceId; 19 | this.pipelineStepName = pipelineStepName; 20 | } 21 | 22 | public long getInstanceId() { 23 | return instanceId; 24 | } 25 | 26 | public void setInstanceId(long instanceId) { 27 | this.instanceId = instanceId; 28 | } 29 | 30 | public String getPipelineStepName() { 31 | return pipelineStepName; 32 | } 33 | 34 | public void setPipelineStepName(String pipelineStepName) { 35 | this.pipelineStepName = pipelineStepName; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/TaskHaltedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | 5 | /** 6 | * Notifies subscribers that a given {@link PipelineTask} has successfully halted. 7 | * 8 | * @author PT 9 | * @author Bill Wohler 10 | */ 11 | public class TaskHaltedMessage extends PipelineMessage { 12 | 13 | private static final long serialVersionUID = 20240913L; 14 | 15 | private final PipelineTask pipelineTask; 16 | 17 | public TaskHaltedMessage(PipelineTask pipelineTask) { 18 | this.pipelineTask = pipelineTask; 19 | } 20 | 21 | public PipelineTask getPipelineTask() { 22 | return pipelineTask; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/TaskLogInformationMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import java.util.Set; 4 | 5 | import gov.nasa.ziggy.services.logging.TaskLogInformation; 6 | 7 | /** 8 | * Carries information about the available task logs for a specific task. 9 | * 10 | * @author PT 11 | */ 12 | public class TaskLogInformationMessage extends SpecifiedRequestorMessage { 13 | 14 | private static final long serialVersionUID = 20230614L; 15 | 16 | private final Set taskLogInformation; 17 | 18 | public TaskLogInformationMessage(TaskLogInformationRequest originalMessage, 19 | Set taskLogInformation) { 20 | super(originalMessage); 21 | this.taskLogInformation = taskLogInformation; 22 | } 23 | 24 | public Set taskLogInformation() { 25 | return taskLogInformation; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/TaskLogInformationRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | import gov.nasa.ziggy.util.Requestor; 5 | 6 | /** 7 | * Ask for metadata on all the log files associated with a given pipeline task. 8 | * 9 | * @see gov.nasa.ziggy.services.logging.TaskLogInformation 10 | * @author PT 11 | * @author Bill Wohler 12 | */ 13 | public final class TaskLogInformationRequest extends SpecifiedRequestorMessage { 14 | 15 | private static final long serialVersionUID = 20240909L; 16 | 17 | private final PipelineTask pipelineTask; 18 | 19 | public TaskLogInformationRequest(Requestor sender, PipelineTask pipelineTask) { 20 | super(sender); 21 | this.pipelineTask = pipelineTask; 22 | } 23 | 24 | public PipelineTask getPipelineTask() { 25 | return pipelineTask; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/TaskProcessingCompleteMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 4 | 5 | public class TaskProcessingCompleteMessage extends PipelineMessage { 6 | 7 | private static final long serialVersionUID = 20240909L; 8 | 9 | private final PipelineTask pipelineTask; 10 | 11 | public TaskProcessingCompleteMessage(PipelineTask pipelineTask) { 12 | this.pipelineTask = pipelineTask; 13 | } 14 | 15 | public PipelineTask getPipelineTask() { 16 | return pipelineTask; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/UpdateProcessingStepMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineInstance; 4 | import gov.nasa.ziggy.pipeline.definition.PipelineTask; 5 | import gov.nasa.ziggy.pipeline.definition.ProcessingStep; 6 | 7 | /** 8 | * Tells the supervisor to update the state of a {@link PipelineTask}, and if necessary also the 9 | * {@link PipelineInstance}. 10 | * 11 | * @author PT 12 | */ 13 | public class UpdateProcessingStepMessage extends PipelineMessage { 14 | 15 | private static final long serialVersionUID = 20240920L; 16 | private final PipelineTask pipelineTask; 17 | private final ProcessingStep processingStep; 18 | 19 | public UpdateProcessingStepMessage(PipelineTask pipelineTask, ProcessingStep processingStep) { 20 | this.pipelineTask = pipelineTask; 21 | this.processingStep = processingStep; 22 | } 23 | 24 | public PipelineTask getPipelineTask() { 25 | return pipelineTask; 26 | } 27 | 28 | public ProcessingStep getProcessingStep() { 29 | return processingStep; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/WorkerResourcesRequest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | /** 4 | * Request that the recipient return a {@link WorkerResourcesMessage} instance. 5 | * 6 | * @author PT 7 | */ 8 | public class WorkerResourcesRequest extends PipelineMessage { 9 | 10 | private static final long serialVersionUID = 20231204L; 11 | 12 | public WorkerResourcesRequest() { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/ZiggyEventHandlerInfoMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messages; 2 | 3 | import java.util.Set; 4 | 5 | import gov.nasa.ziggy.services.events.ZiggyEventHandler.ZiggyEventHandlerInfoForDisplay; 6 | 7 | /** 8 | * Transmits a {@link Set} of {@link ZiggyEventHandlerInfoForDisplay} instances. This message is 9 | * sent in response to the {@link EventHandlerRequest} message. 10 | * 11 | * @author PT 12 | */ 13 | public class ZiggyEventHandlerInfoMessage extends SpecifiedRequestorMessage { 14 | 15 | private static final long serialVersionUID = 20230614L; 16 | 17 | private final Set eventHandlerInfo; 18 | 19 | public ZiggyEventHandlerInfoMessage(EventHandlerRequest originalMessage, 20 | Set eventHandlerInfo) { 21 | super(originalMessage); 22 | this.eventHandlerInfo = eventHandlerInfo; 23 | } 24 | 25 | public Set getEventHandlerInfo() { 26 | return eventHandlerInfo; 27 | } 28 | 29 | @Override 30 | public String toString() { 31 | return super.toString() + ", " + eventHandlerInfo.size() + " event handlers"; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messages/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.messages; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messaging/MessageAction.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.messaging; 2 | 3 | import gov.nasa.ziggy.services.messages.PipelineMessage; 4 | 5 | /** 6 | * Defines an action that is to be taken when a message is delivered to a subscriber. 7 | * 8 | * @author PT 9 | */ 10 | @FunctionalInterface 11 | public interface MessageAction { 12 | 13 | /** 14 | * Performs the action that is to be taken in response to a message. 15 | */ 16 | void action(T message); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/messaging/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.messaging; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/metrics/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.metrics; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/process/StatusMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.process; 2 | 3 | import gov.nasa.ziggy.services.messages.PipelineMessage; 4 | 5 | /** 6 | * Superclass for all status-related messages (messages sent by the {@link StatusMessageBroadcaster} 7 | * 8 | * @author Todd Klaus 9 | */ 10 | public abstract class StatusMessage extends PipelineMessage { 11 | private static final long serialVersionUID = 20230511L; 12 | 13 | private ProcessInfo sourceProcess; 14 | 15 | public StatusMessage() { 16 | } 17 | 18 | public String uniqueKey() { 19 | return sourceProcess.getKey(); 20 | } 21 | 22 | public String source() { 23 | return sourceProcess.toString(); 24 | } 25 | 26 | public String briefStatus() { 27 | return source() + "@" + getTimeSent().toString(); 28 | } 29 | 30 | /** 31 | * @return the sourceProcess 32 | */ 33 | public ProcessInfo getSourceProcess() { 34 | return sourceProcess; 35 | } 36 | 37 | /** 38 | * @param sourceProcess the sourceProcess to set 39 | */ 40 | public void setSourceProcess(ProcessInfo sourceProcess) { 41 | this.sourceProcess = sourceProcess; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/process/StatusReporter.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.process; 2 | 3 | /** 4 | * Implemented by classes that wish to broadcast status messages via the 5 | * {@link StatusMessageBroadcaster} 6 | * 7 | * @author Todd Klaus 8 | */ 9 | public interface StatusReporter { 10 | StatusMessage reportCurrentStatus(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/services/process/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.services.process; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/supervisor/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.supervisor; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/datastore/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.datastore; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/dr/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.dr; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/events/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.events; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/instances/RefreshPanelListener.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.instances; 2 | 3 | public interface RefreshPanelListener { 4 | void refreshNowPressed(); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/instances/SelectedInstanceChangedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.instances; 2 | 3 | import gov.nasa.ziggy.services.messages.PipelineMessage; 4 | 5 | /** 6 | * Message sent when selected instance changes. The currently selected instance is obtained with 7 | * {@link #getPipelineInstanceId()}. 8 | * 9 | * @author PT 10 | * @author Bill Wohler 11 | */ 12 | public class SelectedInstanceChangedMessage extends PipelineMessage { 13 | 14 | private static final long serialVersionUID = 20240913L; 15 | 16 | private final long pipelineInstanceId; 17 | 18 | public SelectedInstanceChangedMessage(long pipelineInstanceId) { 19 | this.pipelineInstanceId = pipelineInstanceId; 20 | } 21 | 22 | public long getPipelineInstanceId() { 23 | return pipelineInstanceId; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/instances/TasksUpdatedMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.instances; 2 | 3 | import gov.nasa.ziggy.services.messages.PipelineMessage; 4 | 5 | /** 6 | * Message sent to panels that depend on the task panel's data to indicate that the data in the task 7 | * panel has been updated. 8 | * 9 | * @author Bill Wohler 10 | */ 11 | 12 | public class TasksUpdatedMessage extends PipelineMessage { 13 | 14 | private static final long serialVersionUID = 20240917L; 15 | 16 | private final TasksTableModel tasksTableModel; 17 | 18 | public TasksUpdatedMessage(TasksTableModel tasksTableModel) { 19 | this.tasksTableModel = tasksTableModel; 20 | } 21 | 22 | public TasksTableModel getTasksTableModel() { 23 | return tasksTableModel; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/instances/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.instances; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/metrilyzer/DatabaseMetricsTypeListModel.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.metrilyzer; 2 | 3 | import com.google.common.collect.ImmutableSet; 4 | 5 | import gov.nasa.ziggy.metrics.MetricsOperations; 6 | 7 | /** 8 | * Get metric types from the database. 9 | * 10 | * @author Sean McCauliff 11 | */ 12 | @SuppressWarnings("serial") 13 | class DatabaseMetricsTypeListModel extends MetricTypeListModel { 14 | private final MetricsOperations metricsOperations = new MetricsOperations(); 15 | 16 | @Override 17 | public void loadMetricTypes() { 18 | updateTypes(ImmutableSet.copyOf(metricsOperations().metricTypes())); 19 | } 20 | 21 | private MetricsOperations metricsOperations() { 22 | return metricsOperations; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/metrilyzer/FileSourceMetricsTypeListModel.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.metrilyzer; 2 | 3 | import gov.nasa.ziggy.services.metrics.MetricsFileParser; 4 | 5 | /** 6 | * Get the metric types from the metrics file. 7 | * 8 | * @author Sean McCauliff 9 | */ 10 | @SuppressWarnings("serial") 11 | class FileSourceMetricsTypeListModel extends MetricTypeListModel { 12 | private final MetricsFileParser metricsFileParser; 13 | 14 | FileSourceMetricsTypeListModel(MetricsFileParser metricsFileParser) { 15 | this.metricsFileParser = metricsFileParser; 16 | } 17 | 18 | @Override 19 | public void loadMetricTypes() { 20 | super.updateTypes(metricsFileParser.types()); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/metrilyzer/MetricsValueSource.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.metrilyzer; 2 | 3 | import java.util.Collection; 4 | import java.util.Date; 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | import gov.nasa.ziggy.metrics.MetricType; 9 | import gov.nasa.ziggy.metrics.MetricValue; 10 | import gov.nasa.ziggy.util.TimeRange; 11 | 12 | /** 13 | * Some place to get metric values from. 14 | * 15 | * @author Sean McCauliff 16 | */ 17 | interface MetricsValueSource { 18 | /** 19 | * @param selectedMetricTypes a non-null set 20 | * @return metrics will be in increasing by time 21 | */ 22 | Map> metricValues(List selectedMetricTypes, 23 | Date windowStart, Date windowEnd); 24 | 25 | Map metricStartEndDates(List selectedMetricTypes); 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/metrilyzer/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.metrilyzer; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/parameters/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.parameters; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/pipeline/ParameterSetMapEditorListener.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.pipeline; 2 | 3 | public interface ParameterSetMapEditorListener { 4 | void notifyMapChanged(Object source); 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/pipeline/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.pipeline; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/status/LabelValue.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.status; 2 | 3 | import static gov.nasa.ziggy.ui.util.HtmlBuilder.htmlBuilder; 4 | 5 | import javax.swing.JLabel; 6 | 7 | import gov.nasa.ziggy.ui.util.ZiggySwingUtils; 8 | 9 | /** 10 | * Displays a name: value JLabel. 11 | * 12 | * @author PT 13 | * @author Bill Wohler 14 | */ 15 | public class LabelValue extends JLabel { 16 | private static final long serialVersionUID = 20230822L; 17 | 18 | public LabelValue(String name, String value) { 19 | setBackground(new java.awt.Color(255, 255, 255)); 20 | setText(htmlBuilder().appendBold(name).appendBold(": ").append(value).toString()); 21 | setFont(new java.awt.Font("Dialog", 0, 10)); 22 | } 23 | 24 | public static void main(String[] args) { 25 | ZiggySwingUtils.displayTestDialog(new LabelValue("name", "value")); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/status/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.status; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/step/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.step; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/FilteredTextField.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util; 2 | 3 | import javax.swing.JTextField; 4 | import javax.swing.text.Document; 5 | import javax.swing.text.DocumentFilter; 6 | import javax.swing.text.PlainDocument; 7 | 8 | /** 9 | * Extension of {@link JTextField} which only accepts input that is formatted according to an 10 | * appropriate filter. 11 | * 12 | * @author PT 13 | */ 14 | public abstract class FilteredTextField extends JTextField { 15 | 16 | private static final long serialVersionUID = 20230511L; 17 | 18 | public FilteredTextField() { 19 | } 20 | 21 | public FilteredTextField(Document doc, String text, int columns) { 22 | super(doc, text, columns); 23 | setFilter(); 24 | } 25 | 26 | public FilteredTextField(int columns) { 27 | super(columns); 28 | setFilter(); 29 | } 30 | 31 | public FilteredTextField(String text) { 32 | super(text); 33 | setFilter(); 34 | } 35 | 36 | public FilteredTextField(String text, int columns) { 37 | super(text, columns); 38 | setFilter(); 39 | } 40 | 41 | private void setFilter() { 42 | PlainDocument doc = (PlainDocument) getDocument(); 43 | doc.setDocumentFilter(filter()); 44 | } 45 | 46 | protected abstract DocumentFilter filter(); 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/FloatingPointTableCellRenderer.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util; 2 | 3 | import java.text.NumberFormat; 4 | 5 | import javax.swing.SwingConstants; 6 | import javax.swing.table.DefaultTableCellRenderer; 7 | 8 | /** 9 | * @author Todd Klaus 10 | */ 11 | @SuppressWarnings("serial") 12 | public class FloatingPointTableCellRenderer extends DefaultTableCellRenderer { 13 | private NumberFormat formatter; 14 | 15 | public FloatingPointTableCellRenderer() { 16 | setHorizontalAlignment(SwingConstants.RIGHT); 17 | } 18 | 19 | @Override 20 | protected void setValue(Object value) { 21 | if (formatter == null) { 22 | formatter = NumberFormat.getInstance(); 23 | formatter.setMaximumFractionDigits(15); 24 | } 25 | setText(value == null ? "" : formatter.format(value)); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/InstanceUpdateMessage.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util; 2 | 3 | import gov.nasa.ziggy.pipeline.definition.PipelineInstance.State; 4 | import gov.nasa.ziggy.services.messages.PipelineMessage; 5 | 6 | public class InstanceUpdateMessage extends PipelineMessage { 7 | 8 | private static final long serialVersionUID = 20240328L; 9 | 10 | private State instanceState; 11 | private boolean instancesRemaining; 12 | 13 | public InstanceUpdateMessage(State instanceState, boolean instancesRemaining) { 14 | this.instanceState = instanceState; 15 | this.instancesRemaining = instancesRemaining; 16 | } 17 | 18 | public State getInstanceState() { 19 | return instanceState; 20 | } 21 | 22 | public boolean isInstancesRemaining() { 23 | return instancesRemaining; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/ParameterEditorFactory.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util; 2 | 3 | import java.beans.PropertyEditor; 4 | 5 | import com.l2fprod.common.propertysheet.Property; 6 | import com.l2fprod.common.propertysheet.PropertyEditorFactory; 7 | import com.l2fprod.common.propertysheet.PropertyEditorRegistry; 8 | 9 | import gov.nasa.ziggy.pipeline.definition.Parameter; 10 | import gov.nasa.ziggy.ui.util.collections.ArrayPropertyEditor; 11 | 12 | /** 13 | * Creates new editors for {@link Parameter} instances based on their contents. 14 | * 15 | * @author PT 16 | */ 17 | public class ParameterEditorFactory implements PropertyEditorFactory { 18 | 19 | @Override 20 | public PropertyEditor createPropertyEditor(Property property) { 21 | if (!(property instanceof Parameter)) { 22 | return null; 23 | } 24 | Parameter typedProperty = (Parameter) property; 25 | if (!typedProperty.isScalar()) { 26 | return new ArrayPropertyEditor(true); 27 | } 28 | return PropertyEditorRegistry.INSTANCE.getEditor(typedProperty.getType()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/collections/ArrayTableCellRenderer.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util.collections; 2 | 3 | import com.l2fprod.common.swing.renderer.DefaultCellRenderer; 4 | 5 | import gov.nasa.ziggy.collections.ZiggyDataType; 6 | 7 | /** 8 | * Render arrays as comma-separated Strings 9 | * 10 | * @author Todd Klaus 11 | */ 12 | @SuppressWarnings("serial") 13 | public class ArrayTableCellRenderer extends DefaultCellRenderer { 14 | @Override 15 | public void setValue(Object value) { 16 | setText(value != null ? ZiggyDataType.objectToString(value) : ""); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/collections/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.util.collections; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/models/AbstractZiggyTableModel.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util.models; 2 | 3 | import javax.swing.table.AbstractTableModel; 4 | 5 | import gov.nasa.ziggy.util.dispmod.ModelContentClass; 6 | 7 | /** 8 | * Extension of the {@link AbstractTableModel} for Ziggy. This class adds the following features to 9 | * its superclass: 10 | *

    11 | *
  1. A method, {@link #getContentAtRow(int)}, that returns the object at a given row in the table. 12 | *
  2. The {@link ModelContentClass} interface, which returns the class of objects managed by the 13 | * table model (i.e., the actual value of parameter T). 14 | *
15 | * 16 | * @author PT 17 | * @param Class of objects managed by the model. 18 | */ 19 | public abstract class AbstractZiggyTableModel extends AbstractTableModel 20 | implements ModelContentClass { 21 | 22 | private static final long serialVersionUID = 20230511L; 23 | 24 | public abstract T getContentAtRow(int row); 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/models/DatabaseModel.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util.models; 2 | 3 | /** 4 | * Console models that read from the database. 5 | * 6 | * @author Bill Wohler 7 | */ 8 | public interface DatabaseModel { 9 | void loadFromDatabase(); 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/models/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.util.models; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.util; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/table/TableMouseListener.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.ui.util.table; 2 | 3 | import gov.nasa.ziggy.ui.util.ZiggySwingUtils; 4 | 5 | /** 6 | * The listener interface for receiving "interesting" mouse events on a table. 7 | *

8 | * The class that is interested in processing a table event implements this interface. The listener 9 | * object created from that class is then registered with a table by using the 10 | * {@link ZiggySwingUtils#addTableMouseListener(javax.swing.JTable, javax.swing.JPopupMenu, TableMouseListener)} 11 | * method. An event is generated when the mouse is pressed. When a mouse event occurs, the relevant 12 | * method in the listener object is invoked, and the row associated with the mouse's location is 13 | * passed to it. 14 | */ 15 | public interface TableMouseListener { 16 | 17 | /** 18 | * Invoked when a mouse button has been pressed. Clients can save the selected row and use it 19 | * when a menu command is run, for example. 20 | * 21 | * @param row the row under the mouse 22 | */ 23 | void rowSelected(int row); 24 | 25 | /** 26 | * Invoked when the mouse button has been double-clicked on a table. 27 | * 28 | * @param row the row under the mouse 29 | */ 30 | void rowDoubleClicked(int row); 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/ui/util/table/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.ui.util.table; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/uow/SingleUnitOfWorkGenerator.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.uow; 2 | 3 | import java.util.LinkedList; 4 | import java.util.List; 5 | 6 | import org.apache.commons.lang3.builder.ReflectionToStringBuilder; 7 | 8 | import gov.nasa.ziggy.pipeline.definition.PipelineInstanceNode; 9 | 10 | public class SingleUnitOfWorkGenerator implements UnitOfWorkGenerator { 11 | 12 | public SingleUnitOfWorkGenerator() { 13 | } 14 | 15 | @Override 16 | public String toString() { 17 | return ReflectionToStringBuilder.toString(this); 18 | } 19 | 20 | @Override 21 | public List generateUnitsOfWork(PipelineInstanceNode pipelineInstanceNode) { 22 | List tasks = new LinkedList<>(); 23 | UnitOfWork prototypeTask = new UnitOfWork(); 24 | tasks.add(prototypeTask); 25 | 26 | return tasks; 27 | } 28 | 29 | @Override 30 | public void setBriefState(UnitOfWork uow, PipelineInstanceNode pipelineInstanceNode) { 31 | uow.setBriefState("single"); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/uow/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.uow; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/ClasspathScannerListener.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import javassist.bytecode.ClassFile; 4 | 5 | /** 6 | * This interface is called by {@link ClasspathScanner} 7 | * 8 | * @author Todd Klaus 9 | */ 10 | public interface ClasspathScannerListener { 11 | void processClass(ClassFile classFile); 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/RegexGroupCounter.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * Provides a count of the number of groups in a regular expression. 8 | * 9 | * @author PT 10 | */ 11 | public class RegexGroupCounter { 12 | 13 | public static final Pattern GROUP_PATTERN = Pattern.compile("\\(([^)]+)\\)"); 14 | 15 | /** 16 | * Provides a count of the number of groups in a regular expression. 17 | *

18 | * Warning: Nested groups are not counted properly. 19 | */ 20 | public static int groupCount(String regex) { 21 | Matcher groupMatcher = GROUP_PATTERN.matcher(regex); 22 | int groupCount = 0; 23 | while (groupMatcher.find()) { 24 | groupCount++; 25 | } 26 | return groupCount; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/Requestor.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import java.util.UUID; 4 | 5 | /** 6 | * An object that makes a request and needs to identify the response (i.e., it needs to see whether 7 | * the response was intended for it or for another {@link Requestor} instance. This is accomplished 8 | * by providing a unique identifier, which is obtained by the {@link #requestorIdentifier()} method. 9 | * The response will be another instance of {@link Requestor} that has the same identifier. This 10 | * allows the {@link #isDestination(Requestor)} method to determine, er, whether this object is the 11 | * intended destination. 12 | *

13 | * Note that while the requestor identifier can be any {@link Object} of any class, each 14 | * {@link Requestor} must have one. In use cases wherein the identifier is required to be unique, it 15 | * is recommended that users implement {@link #requestorIdentifier()} with classes that are 16 | * inherently and automatically unique, such as {@link UUID#randomUUID()}. 17 | * 18 | * @author PT 19 | */ 20 | public interface Requestor { 21 | 22 | Object requestorIdentifier(); 23 | 24 | default boolean isDestination(Requestor requestor) { 25 | return requestor == null || requestorIdentifier() == null ? false 26 | : requestorIdentifier().equals(requestor.requestorIdentifier()); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/SpotBugsUtils.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | /** 4 | * Utilities for use with the SpotBugs static analysis tool. 5 | * 6 | * @author PT 7 | */ 8 | public class SpotBugsUtils { 9 | 10 | /** 11 | * Justification for suppression of OBJECT_DESERIALIZATION warnings. 12 | */ 13 | public static final String DESERIALIZATION_JUSTIFICATION = """ 14 | Ziggy only deserializes objects in directories it creates, thus the objects 15 | that are deserialized are objects that Ziggy initially creates, so there is 16 | no risk from deserialization. 17 | """; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/TimeRange.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import java.util.Date; 4 | import java.util.Objects; 5 | 6 | /** 7 | * Represents a start and end {@link Date}. 8 | * 9 | * @author PT 10 | */ 11 | public class TimeRange { 12 | 13 | private final Date startTimestamp; 14 | private final Date endTimestamp; 15 | 16 | public TimeRange(Date startTimestamp, Date endTimestamp) { 17 | this.startTimestamp = startTimestamp; 18 | this.endTimestamp = endTimestamp; 19 | } 20 | 21 | public Date getStartTimestamp() { 22 | return startTimestamp; 23 | } 24 | 25 | public Date getEndTimestamp() { 26 | return endTimestamp; 27 | } 28 | 29 | @Override 30 | public int hashCode() { 31 | return Objects.hash(endTimestamp, startTimestamp); 32 | } 33 | 34 | @Override 35 | public boolean equals(Object obj) { 36 | if (this == obj) { 37 | return true; 38 | } 39 | if (obj == null || getClass() != obj.getClass()) { 40 | return false; 41 | } 42 | TimeRange other = (TimeRange) obj; 43 | return Objects.equals(endTimestamp, other.endTimestamp) 44 | && Objects.equals(startTimestamp, other.startTimestamp); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/dispmod/ModelContentClass.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.dispmod; 2 | 3 | /** 4 | * Interface that provides the ability for display models to report the Java class for their content 5 | * objects. All Ziggy table models must implement this interface. 6 | * 7 | * @author PT 8 | * @param Class of objects managed by the table model. 9 | */ 10 | public interface ModelContentClass { 11 | 12 | Class tableModelContentClass(); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/dispmod/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.util.dispmod; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/io/Persistable.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.io; 2 | 3 | /** 4 | * This interface is used by the ClassWalker and Persistable input/output stream classes to 5 | * determine whether a class is persistable. Attempts to persist classes or generate code for 6 | * classes that are not Persistable will result in an error. The intent is to catch bugs where 7 | * unintended classes are included in the persistence hierarchy. 8 | *

9 | * The Persistable interface has no methods or fields and serves only to identify the semantics of 10 | * being persistable. 11 | *

12 | * Persistable classes must provide a default constructor so that the serialization code can 13 | * instantiate them. 14 | * 15 | * @author Todd Klaus 16 | */ 17 | public interface Persistable { 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/io/ProxyIgnore.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.io; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | 9 | /** 10 | * This annotation tells the MATLAB code generator and the serializers to ignore the annotated 11 | * field. 12 | * 13 | * @author Todd Klaus 14 | */ 15 | @Retention(RetentionPolicy.RUNTIME) 16 | @Target(ElementType.FIELD) 17 | @Documented 18 | public @interface ProxyIgnore { 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/io/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.util.io; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/CpuInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | public interface CpuInfo extends SysInfo { 4 | String getNumCoresKey(); 5 | 6 | int getNumCores(); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/LinuxCpuInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | /** 4 | * @author Forrest Girouard 5 | * @author PT 6 | */ 7 | public class LinuxCpuInfo extends AbstractSysInfo implements CpuInfo { 8 | private static final String CORES_PER_SOCKET_KEY = "Core(s) per socket"; 9 | private static final String SOCKETS_KEY = "Socket(s)"; 10 | private static final String COMMAND = "/usr/bin/lscpu"; 11 | 12 | public LinuxCpuInfo() { 13 | super(commandOutput(COMMAND)); 14 | } 15 | 16 | @Override 17 | public int getNumCores() { 18 | return Integer.parseInt(get(CORES_PER_SOCKET_KEY)) * Integer.parseInt(get(SOCKETS_KEY)); 19 | } 20 | 21 | @Override 22 | public String getNumCoresKey() { 23 | return CORES_PER_SOCKET_KEY + " * " + SOCKETS_KEY; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/MacOSXCpuInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | import gov.nasa.ziggy.services.process.ExternalProcess; 4 | 5 | /** 6 | * Determines the number of CPU cores for the current hardware at runtime under the Mac OS X 7 | * operating system. 8 | * 9 | * @author Forrest Girouard 10 | * @author PT 11 | */ 12 | public class MacOSXCpuInfo extends AbstractSysInfo implements CpuInfo { 13 | private static final String NUM_CORES_KEY = "hw.physicalcpu"; 14 | 15 | public MacOSXCpuInfo() { 16 | super(ExternalProcess.commandOutput("/usr/sbin/sysctl -a", "hw.")); 17 | } 18 | 19 | @Override 20 | public int getNumCores() { 21 | return Integer.parseInt(get(NUM_CORES_KEY.toLowerCase())); 22 | } 23 | 24 | @Override 25 | public String getNumCoresKey() { 26 | return NUM_CORES_KEY; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/MemInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | /** 4 | * Provides access to system memory information at runtime. 5 | * 6 | * @author Forrest Girouard 7 | */ 8 | public interface MemInfo extends SysInfo { 9 | /** 10 | * Total amount of physical RAM, in kilobytes. 11 | */ 12 | long getTotalMemoryKB(); 13 | 14 | /** 15 | * The amount of physical RAM, in kilobytes, left unused by the system. 16 | */ 17 | long getFreeMemoryKB(); 18 | 19 | /** 20 | * The amount of physical RAM, in kilobytes, used for file buffers. 21 | */ 22 | long getBuffersKB(); 23 | 24 | /** 25 | * The amount of physical RAM, in kilobytes, used as cache memory. 26 | */ 27 | long getCachedKB(); 28 | 29 | /** 30 | * The amount of swap, in kilobytes, used as cache memory. 31 | */ 32 | long getCachedSwapedKB(); 33 | 34 | /** 35 | * The total amount of swap available, in kilobytes. 36 | */ 37 | long getTotalSwapKB(); 38 | 39 | /** 40 | * The total amount of swap free, in kilobytes. 41 | */ 42 | long getFreeSwapKB(); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/ProcInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * @author Forrest Girouard 7 | */ 8 | public interface ProcInfo extends SysInfo { 9 | /** 10 | * Return a List of PIDs for all child processes. 11 | */ 12 | List getChildPids(); 13 | 14 | /** 15 | * Return a List of PIDs for child processes that match the specified name. 16 | */ 17 | List getChildPids(String name); 18 | 19 | /** 20 | * Return the parent PID. 21 | */ 22 | long getParentPid(); 23 | 24 | /** 25 | * Return the PID. 26 | */ 27 | long getPid(); 28 | 29 | /** 30 | * Return the maximum number of open files for this process. 31 | * 32 | * @return -1 for unlimited. 33 | */ 34 | int getOpenFileLimit(); 35 | 36 | /** 37 | * Return the maximum process id value. 38 | */ 39 | long getMaximumPid(); 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/SysInfo.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | public interface SysInfo { 4 | String get(String key); 5 | 6 | void put(String key, String value); 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/os/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.util.os; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/util/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.util; 9 | -------------------------------------------------------------------------------- /src/main/java/gov/nasa/ziggy/worker/package-info.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Provides classes and interfaces for TODO... 3 | * 4 | * @author Bill Wohler 5 | * @author PT 6 | */ 7 | 8 | package gov.nasa.ziggy.worker; 9 | -------------------------------------------------------------------------------- /src/main/java/overview.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

4 | The Ziggy API provides a robust and scaleable infrastructure 5 | that manages data analysis pipelines. 6 |

7 | 8 |

Database Access

9 |

10 | The Ziggy codebase uses Hibernate to manage the object-database 11 | translation. Please refer to the 12 | 13 | gov.nasa.ziggy.services.database package to learn about 14 | our database framework. 15 |

16 | 17 |
18 |
Author
19 |
Bill Wohler
20 |
PT
21 |
22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/matlab/@hdf5ConverterClass/get_field_type.m: -------------------------------------------------------------------------------- 1 | function fieldType = get_field_type( fieldValue ) 2 | % 3 | % get_field_type -- determine the type of a field, in the context of HDF5 conversion 4 | % 5 | % fieldType = hdf5ConverterClass.get_field_type( fieldValue ) determines the field type 6 | % of the MATLAB object fieldValue. 7 | % 8 | 9 | %========================================================================================= 10 | 11 | fieldType = 'invalid' ; 12 | 13 | if isempty(fieldValue) 14 | fieldType = 'empty' ; 15 | elseif isnumeric(fieldValue) && isreal(fieldValue) 16 | fieldType = 'numeric' ; 17 | elseif islogical(fieldValue) 18 | fieldType = 'logical' ; 19 | elseif isstruct(fieldValue) 20 | fieldType = 'struct' ; 21 | elseif isobject(fieldValue) 22 | fieldType = 'object' ; 23 | else 24 | try 25 | cellstr(fieldValue); 26 | fieldType = 'text' ; 27 | catch 28 | % do nothing 29 | end 30 | end 31 | 32 | return 33 | 34 | -------------------------------------------------------------------------------- /src/main/matlab/is_int_valued.m: -------------------------------------------------------------------------------- 1 | function tf = is_int_valued(v) 2 | % 3 | % is_int_valued -- determines whether a MATLAB array contains all integer values 4 | % 5 | % tf = is_int_valued(v) returns true if v is an array in which all the entries are 6 | % integer-typed, or are reals that have integer value, and false otherwise. 7 | % 8 | 9 | %========================================================================================= 10 | 11 | tf = isnumeric(v) && isreal(v) && all(v(:) == round(v(:))); 12 | 13 | return 14 | 15 | -------------------------------------------------------------------------------- /src/main/python/ziggy/setup.py: -------------------------------------------------------------------------------- 1 | from distutils.core import setup 2 | 3 | setup( 4 | name='ziggy', 5 | version='0.9.0', 6 | packages=['ziggytools', 'ziggytools.tests'], 7 | url='', 8 | license='', 9 | author='PT', 10 | author_email='peter.tenenbaum@nasa.gov', 11 | install_requires=['h5py', 'numpy'], 12 | description='Python packages used by Ziggy' 13 | ) 14 | -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/python/ziggy/ziggytools/__init__.py -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/fileutils.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Created on Nov 10, 2021 3 | 4 | @author: PT 5 | ''' 6 | 7 | import os 8 | 9 | def chmod(path, file_mode): 10 | for root, dirs, files in os.walk(path): 11 | for dir in [os.path.join(root, d) for d in dirs]: 12 | os.chmod(dir, file_mode) 13 | for file in [os.path.join(root, f) for f in files]: 14 | os.chmod(file, file_mode) 15 | 16 | # Returns the algorithm step name by reading in the task directory name and 17 | # parsing the "#-#-name" format. 18 | def algorithm_step_name(): 19 | working_dir = os.path.normpath(os.getcwd()) 20 | dir_parts = working_dir.split(os.sep) 21 | num_parts = len(dir_parts) 22 | task_dir = dir_parts[num_parts - 2] 23 | task_dir_tokens = task_dir.split("-") 24 | return task_dir_tokens[2] -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/pidfile.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Utility function that allows a Python program to write a Ziggy PID file. 3 | Created on Oct 1, 2021 4 | 5 | @author: PT 6 | ''' 7 | 8 | import socket 9 | import os 10 | 11 | def write_pid_file(): 12 | process_id = os.getpid() 13 | hostname = socket.gethostname() 14 | pid_string = hostname + ":" + str(process_id) 15 | encoded_string = pid_string.encode("ISO-8859-1") 16 | pid_file = open(".matlab.pids", "wb") 17 | pid_file.write(encoded_string) 18 | -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/python/ziggy/ziggytools/tests/__init__.py -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/tests/throwexception.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Throws a divide-by-zero exception that is comes up from several levels down in the call 3 | stack, thus producing a stack trace that can be inspected. The file is here so that 4 | changes to the stacktracetests.py file don't result in changes to the line numbers at which the 5 | exceptions are thrown. 6 | 7 | Created on Nov 23, 2020 8 | 9 | @author: PT 10 | ''' 11 | class ExceptionGenerator: 12 | def __init__(self): 13 | self.call1() 14 | 15 | def call1(self): 16 | self.call2() 17 | 18 | def call2(self): 19 | z = int(1) / int(0) 20 | return z -------------------------------------------------------------------------------- /src/main/python/ziggy/ziggytools/ziggy.py: -------------------------------------------------------------------------------- 1 | ''' 2 | Module that wraps a Python pipeline algorithm in a try-except block so that the correct 3 | return value is produced and, in the event of an exception, a correct stack trace file is 4 | produced. The inputs file is also read into Python and passed as an argument to the algorithm 5 | function. 6 | 7 | @author: PT 8 | ''' 9 | 10 | from .hdf5 import Hdf5AlgorithmInterface 11 | from .stacktrace import ZiggyErrorWriter 12 | from .pidfile import write_pid_file 13 | from .fileutils import algorithm_step_name 14 | 15 | def run_module(python_function_name): 16 | 17 | try: 18 | 19 | # Generate the PID file. 20 | write_pid_file() 21 | 22 | # Read the inputs. 23 | inputs_file_name = algorithm_step_name() + "-inputs.h5" 24 | inputs = Hdf5AlgorithmInterface().read_file(inputs_file_name) 25 | python_function_name(inputs) 26 | 27 | exit(0) 28 | 29 | except Exception: 30 | ZiggyErrorWriter() 31 | exit(1) 32 | -------------------------------------------------------------------------------- /src/main/resources/images/Ziggy Logo_final_reverse.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/Ziggy Logo_final_reverse.png -------------------------------------------------------------------------------- /src/main/resources/images/columns.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/columns.gif -------------------------------------------------------------------------------- /src/main/resources/images/nasa-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/nasa-logo.png -------------------------------------------------------------------------------- /src/main/resources/images/ziggy-large-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/ziggy-large-clear.png -------------------------------------------------------------------------------- /src/main/resources/images/ziggy-logo-lightning-only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/ziggy-logo-lightning-only.png -------------------------------------------------------------------------------- /src/main/resources/images/ziggy-logo.png: -------------------------------------------------------------------------------- 1 | ziggy-small-clear.png -------------------------------------------------------------------------------- /src/main/resources/images/ziggy-small-clear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/src/main/resources/images/ziggy-small-clear.png -------------------------------------------------------------------------------- /src/main/sh/memdrone.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script uses the ps command to obtain PID and memory usage information 4 | # for a given process name (there can be more than 1 process). The information 5 | # is obtained at regular intervals and saved to a text file. 6 | # 7 | if [ $# -eq 3 ]; then 8 | grepArg=$1 9 | sleepTime=$2 10 | logDir=$3 11 | else 12 | echo "Usage: memdrone.sh processName sleepTime logDir"; 13 | exit 1; 14 | fi 15 | 16 | hostname=$(hostname -s) 17 | 18 | while true; do 19 | date=$(date) 20 | psOutput=$(ps -eo pid,rss,comm | grep $grepArg | grep -v grep) 21 | IFS=" 22 | " 23 | for psItem in $psOutput; do 24 | echo "$date $psItem " >> "${logDir}/memdrone-${hostname}.txt" 25 | done 26 | 27 | sleep $sleepTime 28 | done -------------------------------------------------------------------------------- /src/test/cpp/ExternalProcess/Makefile: -------------------------------------------------------------------------------- 1 | 2 | OUTDIR=../../../../build/bin 3 | OUT=$(OUTDIR)/testprog 4 | 5 | INCLUDES= 6 | CXXFLAGS=-g 7 | CC=gcc 8 | CXX=g++ 9 | LIBS= 10 | LDFLAGS=-g 11 | 12 | SRC = testprog.cpp 13 | 14 | OBJ = $(SRC:.cpp=.o) 15 | 16 | all : $(OUT) 17 | 18 | $(OUT): $(OBJ) 19 | mkdir -p $(OUTDIR) 20 | $(CXX) $(CXXFLAGS) -o $@ $(OBJ) 21 | 22 | .cpp.o: 23 | $(CXX) $(INCLUDES) $(CXXFLAGS) -c $< -o $@ 24 | 25 | clean: 26 | rm -f $(OBJ) $(OUT) *~ 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/test/cpp/SpiffyExceptionTest.cpp: -------------------------------------------------------------------------------- 1 | #include "ziggy_exceptions.h" 2 | 3 | using namespace std; 4 | 5 | void simpleFunction(uint32_t i) { 6 | if (i < 10) { 7 | RUN_TIME_STACK_TRACE 8 | stringstream errMsg; 9 | errMsg << "i must be greater than or equals to 10, but was " << i; 10 | ZIGGY_THROW(IllegalArgumentException, errMsg.str()); 11 | } 12 | try { 13 | simpleFunction(i - 1); 14 | } catch (ZiggyException& e) { //Notice this is not a const reference. 15 | ZIGGY_RETHROW(e); 16 | } 17 | } 18 | 19 | int main(int argc, char** argv) { 20 | 21 | try { 22 | RUN_TIME_STACK_TRACE 23 | ZIGGY_THROW(IllegalArgumentException, "Err msg."); 24 | } catch (const ZiggyException& e) { 25 | cerr << e << endl; 26 | } 27 | 28 | 29 | try { 30 | simpleFunction(15); 31 | } catch (const ZiggyException& e) { 32 | cerr << e << endl; 33 | } 34 | 35 | return 0; 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/test/cpp/testmi/Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # Makefile for the testmi algorithm binary 3 | # 4 | 5 | BINARY_NAME := testmi 6 | 7 | GENERATED_SOURCE_DIR := ../../../../build/src/cpp/testmi 8 | OUTPUT_DIR_OBJ := ../../../../build/obj 9 | OUTPUT_DIR_BIN := ../../../../build/bin 10 | 11 | PERSISTABLE_LIBDIR := ../../../../build/lib 12 | PERSISTABLE_LIBNAME := ziggymi 13 | PERSISTABLE_INC := ../../../../src/main/cpp/libziggymi/ 14 | 15 | CPP_FILES := $(wildcard $(GENERATED_SOURCE_DIR)/*.cpp) 16 | CPP_FILES += $(wildcard ./*.cpp) 17 | OBJ_FILES := $(addprefix $(OUTPUT_DIR_OBJ)/,$(notdir $(CPP_FILES:.cpp=.o))) 18 | 19 | INCLUDES :=. $(GENERATED_SOURCE_DIR) $(PERSISTABLE_INC) 20 | INC_PARAMS=$(foreach d, $(INCLUDES), -I$d) 21 | 22 | CC_FLAGS := -Wall $(INC_PARAMS) -std=c++11 -O2 -DDEBUG 23 | LD_FLAGS := -L$(PERSISTABLE_LIBDIR) -l$(PERSISTABLE_LIBNAME) 24 | 25 | VPATH = .:$(GENERATED_SOURCE_DIR) 26 | 27 | #all : $(BINARY_NAME) 28 | 29 | $(BINARY_NAME): $(OBJ_FILES) 30 | g++ $(LD_FLAGS) -o $@ $^ 31 | 32 | $(OUTPUT_DIR_OBJ)/%.o: %.cpp 33 | mkdir -p $(OUTPUT_DIR_OBJ) 34 | g++ $(CC_FLAGS) -c -o $@ $< 35 | 36 | clean: 37 | rm -f $(OUTPUT_DIR_OBJ)/* $(BINARY_NAME) 38 | 39 | -------------------------------------------------------------------------------- /src/test/cpp/testmi/TestmiController.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "TestmiController.h" 3 | 4 | #include 5 | 6 | TestmiController::TestmiController(){ 7 | } 8 | 9 | TestmiController::~TestmiController(){ 10 | } 11 | 12 | int TestmiController::doScience( TestmiInputs *inputs, TestmiOutputs* outputs ){ 13 | 14 | try{ 15 | 16 | // populate inputs 17 | 18 | // invoke algorithm, populate outputs 19 | 20 | // store outputs 21 | 22 | }catch (...){ 23 | std::cerr << "Unexpected error thrown" << std::endl; 24 | return -3; 25 | } 26 | 27 | return 0; 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/test/cpp/testmi/TestmiController.h: -------------------------------------------------------------------------------- 1 | #ifndef TESTMICONTROLLER_H_ 2 | #define TESTMICONTROLLER_H_ 3 | 4 | #include "TestmiInputs.h" 5 | #include "TestmiOutputs.h" 6 | 7 | class TestmiController 8 | { 9 | public: 10 | TestmiController(); 11 | virtual ~TestmiController(); 12 | 13 | int doScience( TestmiInputs *inputs, TestmiOutputs *outputs ); 14 | }; 15 | 16 | #endif /*TESTMICONTROLLER_H_*/ 17 | 18 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/FlakyTestCategory.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy; 2 | 3 | /** 4 | * Marker interface for tests that don't fail every time. To use mark the class or method with 5 | * 6 | *
 7 |  * {@literal @}Category (FlakyTestCategory.class)
 8 |  * 
9 | * 10 | * These tests are implicitly marked with {@link IntegrationTestCategory}. This means that tests 11 | * that have this marker don't need an additional {@code IntegrationTestCategory} marker, nor does 12 | * {@code FlakyTestCategory} have to be added to a list of categories in a build file that already 13 | * excludes {@code IntegrationTestCategory}. However, this marker should probably be excluded by 14 | * Gradle integration test tasks that include the {@code IntegrationTestCategory}. 15 | * 16 | * @author Bill Wohler 17 | */ 18 | public interface FlakyTestCategory extends IntegrationTestCategory { 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/IntegrationTestCategory.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy; 2 | 3 | /** 4 | * Marker interface for integration (and slow) tests. To use mark the class or method with 5 | * 6 | *
 7 |  * {@literal @}Category (IntegrationTestCategory.class)
 8 |  * 
9 | * 10 | * @author Bill Wohler 11 | */ 12 | public interface IntegrationTestCategory { 13 | } 14 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/MemoryTestUtils.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | * Utility methods for testing memory management. 8 | */ 9 | public class MemoryTestUtils { 10 | 11 | /** 12 | * Allocate as many chunks of memory as possible, until out of memory is reached. The chunk size 13 | * should be large enough that this routine can allocate a small array after the 14 | * OutOfMemoryError to hold references to the allocated chunks. 15 | * 16 | * @param chunkSize the size of each chunk to allocate 17 | * @return an array of allocated chunks 18 | */ 19 | public static byte[][] allocateAllChunksPossible(int chunkSize) { 20 | List chunks = new ArrayList<>(); 21 | for (;;) { 22 | try { 23 | byte[] chunk = new byte[chunkSize]; 24 | chunks.add(chunk); 25 | } catch (OutOfMemoryError ex) { 26 | break; 27 | } 28 | } 29 | 30 | return chunks.toArray(new byte[chunks.size()][]); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/RunByNameTestCategory.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy; 2 | 3 | /** 4 | * Marker interface for tests that need to run by themselves. To use mark the class or method with 5 | * 6 | *
 7 |  * {@literal @}Category (RunByNameTestCategory.class)
 8 |  * 
9 | * 10 | * These tests are implicitly marked with {@link IntegrationTestCategory}. This means that tests 11 | * that have this marker don't need an additional {@code IntegrationTestCategory} marker, nor does 12 | * {@code RunByNameTestCategory} have to be added to a list of categories in a build file that 13 | * already excludes {@code IntegrationTestCategory}. However, this marker should probably be 14 | * excluded by Gradle integration test tasks that include the {@code IntegrationTestCategory}. 15 | * 16 | * @author Bill Wohler 17 | */ 18 | public interface RunByNameTestCategory extends IntegrationTestCategory { 19 | } 20 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/ZiggyPropertyRuleTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Rule; 6 | import org.junit.Test; 7 | import org.junit.rules.RuleChain; 8 | 9 | import gov.nasa.ziggy.services.config.PropertyName; 10 | 11 | /** 12 | * All of our tests test the constructors that take a {@link PropertyName}. What they don't test are 13 | * the constructors that take a string, which may be used by other projects. Test those here. 14 | */ 15 | public class ZiggyPropertyRuleTest { 16 | public ZiggyDirectoryRule directoryRule = new ZiggyDirectoryRule(); 17 | 18 | @Rule 19 | public ZiggyPropertyRule stringPropertyRule = new ZiggyPropertyRule("string", "value"); 20 | 21 | public ZiggyPropertyRule stringDirectoryPropertyRule = new ZiggyPropertyRule("directory-string", 22 | directoryRule); 23 | 24 | @Rule 25 | public RuleChain ruleChain = RuleChain.outerRule(directoryRule) 26 | .around(stringDirectoryPropertyRule); 27 | 28 | @Test 29 | public void stringConstructorTest() { 30 | assertEquals("value", stringPropertyRule.getValue()); 31 | assertEquals("build/test/ZiggyPropertyRuleTest/stringConstructorTest", 32 | stringDirectoryPropertyRule.getValue()); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/pipeline/definition/DatastoreProducerConsumerTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.definition; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import java.nio.file.Paths; 6 | 7 | import org.junit.Test; 8 | import org.mockito.Mockito; 9 | 10 | import gov.nasa.ziggy.data.management.DatastoreProducerConsumer; 11 | 12 | /** 13 | * Test class for the ResultsOriginator class. Which is so simple that it doesn't really rate a test 14 | * class, but completeness is a worthwhile goal. 15 | * 16 | * @author PT 17 | */ 18 | public class DatastoreProducerConsumerTest { 19 | 20 | public static final String FILE_SPEC = "d1/d2/d3/fake-file.h5"; 21 | public static final long TASK_ID = 30L; 22 | 23 | @Test 24 | public void testResultsOriginatorMethods() { 25 | 26 | PipelineTask p = Mockito.mock(PipelineTask.class); 27 | Mockito.when(p.getId()).thenReturn(TASK_ID); 28 | DatastoreProducerConsumer r = new DatastoreProducerConsumer(p, Paths.get(FILE_SPEC)); 29 | assertEquals(FILE_SPEC, r.getFilename()); 30 | assertEquals(TASK_ID, r.getProducer()); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/pipeline/step/hdf5/EnumTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.hdf5; 2 | 3 | public enum EnumTest { 4 | FIRST, SECOND, THIRD 5 | } 6 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/pipeline/step/remote/ArchitectureTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | import static org.junit.Assert.assertFalse; 5 | import static org.junit.Assert.assertTrue; 6 | 7 | import org.junit.Before; 8 | import org.junit.Test; 9 | import org.mockito.Mockito; 10 | 11 | /** Unit tests for the {@link Architecture} class. */ 12 | public class ArchitectureTest { 13 | 14 | private Architecture architecture = Mockito.spy(Architecture.class); 15 | 16 | @Before 17 | public void setUp() { 18 | Mockito.doReturn("name").when(architecture).getName(); 19 | Mockito.doReturn("description").when(architecture).getDescription(); 20 | Mockito.doReturn(32).when(architecture).getCores(); 21 | Mockito.doReturn(128).when(architecture).getRamGigabytes(); 22 | Mockito.doReturn(1.0F).when(architecture).getCost(); 23 | Mockito.doReturn(10.0F).when(architecture).getBandwidthGbps(); 24 | } 25 | 26 | @Test 27 | public void testHasSufficientRam() { 28 | assertFalse(architecture.hasSufficientRam(129)); 29 | assertTrue(architecture.hasSufficientRam(127)); 30 | } 31 | 32 | @Test 33 | public void testGigsPerCore() { 34 | assertEquals(4.0, architecture.gigsPerCore(), 1e-6); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/pipeline/step/remote/RemoteExecutionConfigurationTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.pipeline.step.remote; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.apache.commons.lang3.builder.EqualsBuilder; 6 | import org.junit.Test; 7 | 8 | import gov.nasa.ziggy.pipeline.definition.PipelineNodeExecutionResources; 9 | 10 | /** 11 | * Test class for {@link PipelineNodeExecutionResources} class. 12 | * 13 | * @author PT 14 | */ 15 | public class RemoteExecutionConfigurationTest { 16 | 17 | @Test 18 | public void testCopyConstructor() { 19 | PipelineNodeExecutionResources r1 = new PipelineNodeExecutionResources("dummy", "dummy"); 20 | r1.setRemoteExecutionEnabled(true); 21 | r1.setGigsPerSubtask(2.0); 22 | r1.setMaxNodes(3); 23 | r1.setMinCoresPerNode(4); 24 | r1.setMinGigsPerNode(5.0); 25 | r1.setOptimizer(RemoteArchitectureOptimizer.CORES); 26 | r1.setReservedQueueName("low"); 27 | r1.setRemoteNodeArchitecture("bro"); 28 | r1.setSubtaskMaxWallTimeHours(9); 29 | r1.setSubtasksPerCore(1.5); 30 | r1.setSubtaskTypicalWallTimeHours(0.5); 31 | 32 | PipelineNodeExecutionResources r2 = new PipelineNodeExecutionResources(r1); 33 | assertTrue(EqualsBuilder.reflectionEquals(r2, r1)); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/services/config/PropertyNameTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.config; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.apache.commons.configuration2.ImmutableConfiguration; 6 | import org.junit.Rule; 7 | import org.junit.Test; 8 | 9 | import gov.nasa.ziggy.ZiggyPropertyRule; 10 | 11 | /** Unit tests for {@link PropertyName} class. */ 12 | public class PropertyNameTest { 13 | 14 | @Rule 15 | public ZiggyPropertyRule groupPropertyRule = new ZiggyPropertyRule("ziggy.remote.hecc.group", 16 | "g1"); 17 | 18 | @Rule 19 | public ZiggyPropertyRule userPropertyRule = new ZiggyPropertyRule("ziggy.remote.gcp.user", 20 | "u1"); 21 | 22 | @Test 23 | public void testPropertiesRetrieval() { 24 | ImmutableConfiguration config = ZiggyConfiguration.getInstance(); 25 | assertEquals("u1", config.getString(PropertyName.remoteUser("GCP"))); 26 | assertEquals("g1", config.getString(PropertyName.remoteGroup("HECC"))); 27 | } 28 | 29 | @Test 30 | public void testEmptyPropertiesRetrieval() { 31 | ImmutableConfiguration config = ZiggyConfiguration.getInstance(); 32 | assertEquals("", config.getString(PropertyName.remoteUser("mock"), "")); 33 | assertEquals("", config.getString(PropertyName.remoteGroup("mock"), "")); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/services/database/HibernateMe.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.database; 2 | 3 | public class HibernateMe { 4 | private int id; 5 | private String value; 6 | 7 | public HibernateMe() { 8 | } 9 | 10 | public int getId() { 11 | return id; 12 | } 13 | 14 | public void setId(int id) { 15 | this.id = id; 16 | } 17 | 18 | public String getValue() { 19 | return value; 20 | } 21 | 22 | public void setValue(String value) { 23 | this.value = value; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/services/logging/TaskLogCreator.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.services.logging; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | public class TaskLogCreator { 7 | 8 | public static final Logger log = LoggerFactory.getLogger(TaskLogCreator.class); 9 | 10 | public static void main(String[] args) { 11 | log.info(args[0]); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/IntegerFormatterTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | public class IntegerFormatterTest { 8 | 9 | @Test 10 | public void testEngineeringNotation() { 11 | assertEquals("14", IntegerFormatter.engineeringNotation(14)); 12 | assertEquals("-233", IntegerFormatter.engineeringNotation(-233)); 13 | assertEquals("1.23 k", IntegerFormatter.engineeringNotation(1230)); 14 | assertEquals("-22.5 k", IntegerFormatter.engineeringNotation(-22500)); 15 | assertEquals("223 k", IntegerFormatter.engineeringNotation(223000)); 16 | assertEquals("223 M", IntegerFormatter.engineeringNotation(223000000)); 17 | assertEquals("223 G", IntegerFormatter.engineeringNotation(223000000000L)); 18 | assertEquals("223 T", IntegerFormatter.engineeringNotation(223000000000000L)); 19 | assertEquals("223 P", IntegerFormatter.engineeringNotation(223000000000000000L)); 20 | assertEquals("2.23 E", IntegerFormatter.engineeringNotation(2230000000000000000L)); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/RegexBackslashManagerTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | public class RegexBackslashManagerTest { 8 | 9 | @Test 10 | public void testToSingleBackslash() { 11 | assertEquals("foo bar", RegexBackslashManager.toSingleBackslash("foo bar")); 12 | assertEquals("foo\\bar", RegexBackslashManager.toSingleBackslash("foo\\bar")); 13 | } 14 | 15 | @Test 16 | public void testToDoubleBackslash() { 17 | assertEquals("foo bar", RegexBackslashManager.toDoubleBackslash("foo bar")); 18 | assertEquals("foo\\\\bar", RegexBackslashManager.toDoubleBackslash("foo\\bar")); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/RegexGroupCounterTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | 5 | import org.junit.Test; 6 | 7 | public class RegexGroupCounterTest { 8 | 9 | @Test 10 | public void testGroupCount() { 11 | assertEquals(0, RegexGroupCounter.groupCount("foobar")); 12 | assertEquals(1, RegexGroupCounter.groupCount("(foo)bar")); 13 | assertEquals(2, RegexGroupCounter.groupCount("(foo)(bar)")); 14 | // TODO Fix the method so the next test passes 15 | // assertEquals(3, RegexGroupCounter.groupCount("before ((foo)(bar)) after")); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/SystemProxyTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util; 2 | 3 | import static org.junit.Assert.assertEquals; 4 | import static org.junit.Assert.assertTrue; 5 | 6 | import org.junit.Test; 7 | 8 | public class SystemProxyTest { 9 | 10 | private static final long EARLY_IN_2024 = 1704391820427L; 11 | 12 | @Test 13 | public void testCurrentTimeMillis() { 14 | assertTrue(SystemProxy.currentTimeMillis() > EARLY_IN_2024); 15 | 16 | SystemProxy.setUserTime(EARLY_IN_2024); 17 | assertEquals(EARLY_IN_2024, SystemProxy.currentTimeMillis()); 18 | } 19 | 20 | @Test 21 | public void testExit() { 22 | SystemProxy.disableExit(); 23 | SystemProxy.exit(42); 24 | assertEquals(Integer.valueOf(42), SystemProxy.getLatestExitCode()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/os/CpuInfoTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | import org.slf4j.Logger; 7 | import org.slf4j.LoggerFactory; 8 | 9 | /** 10 | * Tests the OS-specific implementation of the {@link CpuInfo} class. 11 | * 12 | * @author Forrest Girouard 13 | */ 14 | public class CpuInfoTest { 15 | private static final Logger log = LoggerFactory.getLogger(CpuInfoTest.class); 16 | 17 | @Test 18 | public void test() throws Exception { 19 | CpuInfo cpuInfo = OperatingSystemType.newInstance().getCpuInfo(); 20 | 21 | int numCores = cpuInfo.getNumCores(); 22 | 23 | log.info(String.format("%s: %d", cpuInfo.getNumCoresKey(), numCores)); 24 | 25 | assertTrue("NumCores", numCores > 0); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/os/MemInfoTest.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | import static org.junit.Assert.assertTrue; 4 | 5 | import org.junit.Test; 6 | 7 | /** 8 | * Tests the OS-specific implementation of the {@link CpuInfo} class. 9 | * 10 | * @author Forrest Girouard 11 | */ 12 | public class MemInfoTest { 13 | @Test 14 | public void test() throws Exception { 15 | MemInfo memInfo = OperatingSystemType.newInstance().getMemInfo(); 16 | 17 | long totalMemory = memInfo.getTotalMemoryKB(); 18 | long freeMemory = memInfo.getFreeMemoryKB(); 19 | long buffers = memInfo.getBuffersKB(); 20 | long cached = memInfo.getCachedKB(); 21 | long cachedSwap = memInfo.getCachedSwapedKB(); 22 | long totalSwap = memInfo.getTotalSwapKB(); 23 | long freeSwap = memInfo.getFreeSwapKB(); 24 | 25 | assertTrue("totalMemory", totalMemory >= 0); 26 | assertTrue("freeMemory", freeMemory >= 0); 27 | assertTrue("buffers", buffers >= 0); 28 | assertTrue("cached", cached >= 0); 29 | assertTrue("cachedSwap", cachedSwap >= 0); 30 | assertTrue("totalSwap", totalSwap >= 0); 31 | assertTrue("freeSwap", freeSwap >= 0); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/os/ProcessUtilsTestProgram.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.os; 2 | 3 | /** 4 | * This is used to test executing a Java class in a different process. 5 | * 6 | * @author Sean McCauliff 7 | */ 8 | public class ProcessUtilsTestProgram { 9 | /** 10 | * @param args 11 | */ 12 | public static void main(String[] argv) { 13 | int exitStatus = Integer.parseInt(argv[0]); 14 | System.out.println(argv[1]); 15 | System.exit(exitStatus); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/FieldAccessException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class FieldAccessException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public FieldAccessException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/FieldNameException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class FieldNameException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public FieldNameException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/GetterSetterExistenceException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class GetterSetterExistenceException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public GetterSetterExistenceException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/GetterSetterNameException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class GetterSetterNameException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public GetterSetterNameException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/GetterSetterTypeException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class GetterSetterTypeException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public GetterSetterTypeException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/test/java/gov/nasa/ziggy/util/pojo/GetterSetterValueException.java: -------------------------------------------------------------------------------- 1 | package gov.nasa.ziggy.util.pojo; 2 | 3 | /** 4 | * @author Miles Cote 5 | */ 6 | public class GetterSetterValueException extends RuntimeException { 7 | private static final long serialVersionUID = 20230511L; 8 | 9 | public GetterSetterValueException(String message) { 10 | super(message); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/data/datastore-update.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /test/data/memdrone-r190i1n5.txt.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nasa/ziggy/6ba32c0e7d10095250c908314778440350d6e3f8/test/data/memdrone-r190i1n5.txt.gz -------------------------------------------------------------------------------- /test/data/node.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/data/pbs-log-status-no-comment.txt: -------------------------------------------------------------------------------- 1 | Job 20255559.pbspl1.nas.nasa.gov started on Wed Aug 07 12:00:12 PDT 2024 2 | The job requested the following resources: 3 | ncpus=1 4 | place=scatter:excl 5 | walltime=00:30:00 6 | 7 | PBS set the following environment variables: 8 | FORT_BUFFERED = 1 9 | TZ = PST8PDT 10 | 11 | ____________________________________________________________________ 12 | Job Resource Usage Summary for 20255559.pbspl1.nas.nasa.gov 13 | 14 | CPU Time Used : 02:30:11 15 | Real Memory Used : 19276372kb 16 | Walltime Used : 00:30:29 17 | Exit Status : 0 18 | 19 | Number of CPUs Requested : 1 20 | Walltime Requested : 00:30:00 21 | 22 | Execution Queue : low 23 | Charged To : s1007 24 | 25 | Job Stopped : Wed Aug 7 12:30:55 2024 26 | ____________________________________________________________________ 27 | -------------------------------------------------------------------------------- /test/data/pd-bad-node-param-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/data/pd-bad-pipeline-param-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/data/pd-four-default-param-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test/data/pd-test-2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/data/pd-test-invalid-type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/data/pe-test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 7 | 8 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/data/pl-event.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /test/data/pl-override-bad-type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/data/pl-override-new-param-set.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/data/pl-overrides.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /test/data/pl-replacement-param-sets.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /test/data/qs.csv: -------------------------------------------------------------------------------- 1 | ,ARMD,,,,HEOMD,,,,SMD,,,,Total 2 | ,Nodes,Backlog,Runout,Expans,Nodes,Backlog,Runout,Expans,Nodes,Backlog,Runout,Expans,Nodes,Backlog,Runout,Expans 3 | wes,0,0.0,0.0,0.0,0,0.0,0.0,0.0,0,0.0,0.0,0.0,0,0.0,0.0,0.0 4 | san,420,22.6,53.8,1.0,356,99.0,278.4,2.0,808,141.9,175.7,15.6,1616,263.5,163.1,15.6 5 | ivy,1325,261.7,197.5,122.4,1121,245.4,218.9,2.6,2548,509.1,199.8,31.7,5096,1016.9,199.5,122.4 6 | has,488,12.5,25.7,3.1,412,94.3,228.7,5.0,938,771.1,822.5,13.2,1875,877.9,468.2,13.2 7 | bro,505,31.6,62.6,4.7,428,67.7,158.3,2.3,972,234.5,241.2,21.1,1944,334.2,171.9,21.1 8 | ele,289,31.1,107.9,15.2,244,0.0,0.0,0.0,555,198.8,358.1,2.7,1110,229.9,207.1,15.2 9 | sky,532,268.8,505.5,122.5,450,37.4,83.1,4.9,1023,168.7,165.0,10.4,2045,475.3,232.4,122.5 10 | cas,284,67.8,239.0,4.0,240,100.1,416.9,4.9,546,155.6,284.9,4.7,1092,323.6,296.3,4.9 11 | rom,70,6.9,98.0,62.8,60,11.3,189.2,1.6,136,192.8,1423.2,4.4,271,211.0,778.7,62.8 12 | -------------------------------------------------------------------------------- /test/data/step1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/data/step2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /test/data/test.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /test/etc/envvar.ziggy.properties: -------------------------------------------------------------------------------- 1 | 2 | ziggy.test.file.property=from.envvar.location 3 | -------------------------------------------------------------------------------- /test/etc/sysprop.ziggy.properties: -------------------------------------------------------------------------------- 1 | 2 | ziggy.test.file.property=from.sysprop.location 3 | -------------------------------------------------------------------------------- /test/procedures/ZiggySamplePipelineTest-01.sh: -------------------------------------------------------------------------------- 1 | ZiggySamplePipelineTest-01() { 2 | pause "Perform steps 2 - 5 of ZiggySamplePipelineTest (1)" "verify the files in the datastore" 3 | 4 | # TODO Run the pipeline 5 | 6 | # Sanitize date stamps 7 | replacement='s/[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}.0001-sample-model.txt/YYYY-MM-DD.0001-sample-model.txt/' 8 | sed $replacement $expected > /tmp/$test.expected 9 | 10 | # TODO Extract datastore directory from property file (repurpose ziggy dump-system-properties?) 11 | find sample-pipeline/build/pipeline-results/datastore | sort | sed $replacement > /tmp/$test.out 12 | diff -u /tmp/$test.expected /tmp/$test.out 13 | logTestResult $? "datastore content to match expected outputs" 14 | rm /tmp/$test.expected /tmp/$test.out 15 | } 16 | --------------------------------------------------------------------------------