/* Examplar - An automation and testing framework. © SURRO INDUSTRIES and Chris Punches, 2017. This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ /* Unit.h * Unit is a type that represents a safely deserialized JSON object which defines what actions are taken as Examplar * iterates through it's Tasks in it's given Plan. They only define the behaviour on execution, while the tasks define * which Units are executed and in what order (and which Units a given Task depends on. */ #ifndef FTESTS_UNIT_H #define FTESTS_UNIT_H #include #include "../../json/json.h" #include "../low_level/JSON_Loader.h" #include "../../Logger/Logger.h" class Unit: JSON_Loader { private: // the name of the test std::string name; // the path of the executable this test executes when run std::string target; // the desired output // poll: would an empty value be good to indicate to rely solely on zero/non-zero exit code? std::string output; // the path of the executable this test runs when the target executable fails to produce output or a 0 exit code. std::string rectifier; // an indicator of whether the test is active or not // this is used as a way to give definers a way to force executors to edit arbitrary fields or prevent // execution of potentially dangerous or intrusive tests bool active; // an indicator of whether or not this test is required to pass. // intended to be used as a flag to halt execution of further tests on failure bool required; // indicator of whether the rectifier executable should be run on test failures. // if rectifier exits on non-zero return code, it should be trigger the behaviour indicated by required bool rectify; // user to run process as. // not intended for protected accounts, handle your own security std::string user; // group to run process as. // not intended for protected accounts, handle your own security std::string group; // shell to use for env std::string shell; public: Unit( int LOG_LEVEL ); // loads a serialized jason::value object as a unit int load_root( Json::Value loader_root ); // loads a string as a json string and deserializes that. int load_string( std::string json_val ); // getters std::string get_name(); std::string get_target(); std::string get_output(); std::string get_rectifier(); bool get_active(); bool get_required(); bool get_rectify(); std::string get_user(); std::string get_group(); std::string get_shell(); private: int LOG_LEVEL; Logger slog; }; #endif //FTESTS_UNIT_H