SPL File TestShellSourceInputTuples.spl

Toolkits > SampleShellSource 1.1.0 > sample > TestShellSourceInputTuples.spl

Content

Operators
  • TestShellSourceInputTuples: This sample application ingests valid and invalid shell commands from a text file into tuples containing additional attributes, executes the commands with a variety of ShellSource operators that illustrate how to specify the operator's optional parameters, and writes STDOUT, STDERR, and exit status from each command into files.

Composites

public composite TestShellSourceInputTuples

This sample application ingests valid and invalid shell commands from a text file into tuples containing additional attributes, executes the commands with a variety of ShellSource operators that illustrate how to specify the operator's optional parameters, and writes STDOUT, STDERR, and exit status from each command into files.

Parameters

SPL Source Code


 composite TestShellSourceInputTuples {
 
     param
     expression<rstring> $commandFile: dataDirectory() + "/commands.txt";
 
     type
 
     CommandType =
         float64 commandTimestamp,
         int32 commandNumber,
         rstring command;
 
     StatusType =
         CommandType, tuple<
         int32 exitCode,
         rstring exitReason,
         list<uint64> counters >;
 
     graph
 
 
     // create a stream of tuples containing shell commands for the ShellSource operators below to consume
     stream<CommandType> CommandStream as Out = FileSource() {
     logic state: { mutable int32 counter = 0; }
     param
         file: $commandFile;
         format: line;
     output Out:
         commandTimestamp = getTimestampInSecs(),
         commandNumber = counter++; }
     () as DebugCommandStream = FileSink(CommandStream) { param file: "debug.TestShellSourceInputTuples.CommandStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
 
 
     // execute a stream of shell commands and produce tuples from the lines they write to STDOUT
     stream<rstring stdoutLine> A_STDOUTStream = ShellSource(CommandStream) {
     param
         commandAttribute: command;
         stdoutAttribute: "stdoutLine";
         }
     () as DebugA_STDOUTStream = FileSink(A_STDOUTStream) { param file: "debug.TestShellSourceInputTuples.A_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
 
 
     // execute a stream of shell commands and produce tuples from the lines they write to STDOUT and STDERR, plus a status tuple with the commands' exit codes
     ( stream<int32 commandNumber, rstring line> B_STDOUTStream ;
       stream<int32 commandNumber, rstring line> B_STDERRStream ;
       stream<StatusType>  B_StatusStream ) = ShellSource(CommandStream) {
     output B_StatusStream:
         command = commandLine(),
         exitCode = exitCode(),
         exitReason = exitReason(),
         counters = lineCounters(); }
     () as DebugB_STDOUTStream = FileSink(B_STDOUTStream) { param file: "debug.TestShellSourceInputTuples.B_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
     () as DebugB_STDERRStream = FileSink(B_STDERRStream) { param file: "debug.TestShellSourceInputTuples.B_STDERRStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
     () as DebugB_StatusStream = FileSink(B_StatusStream) { param file: "debug.TestShellSourceInputTuples.B_StatusStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
 
 
     // execute a stream of shell commands and produce tuples from the lines they write to STDOUT and STDERR, plus a status tuple with the commands' exit codes
     ( stream<float64 commandTimestamp, rstring stdoutLine> C_STDOUTStream ;
       stream<float64 commandTimestamp, rstring stderrLine> C_STDERRStream ;
       stream<StatusType> C_StatusStream ) = ShellSource(CommandStream) {
     param
         commandAttribute: command;
         stdoutAttribute: "stdoutLine";
         stderrAttribute: "stderrLine";
     output C_StatusStream:
         exitCode = exitCode(),
         exitReason = exitReason(),
         counters = lineCounters(); }
     () as DebugC_STDOUTStream = FileSink(C_STDOUTStream) { param file: "debug.TestShellSourceInputTuples.C_STDOUTStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
     () as DebugC_STDERRStream = FileSink(C_STDERRStream) { param file: "debug.TestShellSourceInputTuples.C_STDERRStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
     () as DebugC_StatusStream = FileSink(C_StatusStream) { param file: "debug.TestShellSourceInputTuples.C_StatusStream.out"; format: txt; hasDelayField: true; flush: 1u; writePunctuations: true; }
 
 
 }