// k6/execution MoonBit Facade
// Execution context information for k6
///| VU Information
///|
/// FFI: Get vu object
#module("k6/execution")
extern "js" fn ffi_get_vu() -> @core.Any = "vu"
///|
/// FFI: Get scenario object
#module("k6/execution")
extern "js" fn ffi_get_scenario() -> @core.Any = "scenario"
///|
/// FFI: Get instance object
#module("k6/execution")
extern "js" fn ffi_get_instance() -> @core.Any = "instance"
///|
/// FFI: Get test object
#module("k6/execution")
extern "js" fn ffi_get_test_info() -> @core.Any = "test"
///| Public API
///|
/// Get VU execution context
/// Contains: idInInstance, idInTest, iterationInInstance, iterationInScenario
pub fn execution_vu() -> @core.Any {
ffi_get_vu()
}
///|
/// Get scenario execution context
/// Contains: name, executor, startTime, progress, iterationInInstance, iterationInTest
pub fn execution_scenario() -> @core.Any {
ffi_get_scenario()
}
///|
/// Get instance execution context
/// Contains: vusActive, vusInitialized, iterationsCompleted, iterationsInterrupted
pub fn execution_instance() -> @core.Any {
ffi_get_instance()
}
///|
/// Get test execution context
/// Contains: options, abort()
pub fn test_info() -> @core.Any {
ffi_get_test_info()
}
///| Helper Functions
///|
/// Get VU ID in instance
pub fn vu_id_in_instance() -> Int {
let vu_obj = execution_vu()
let id : Int = vu_obj["idInInstance"].cast()
id
}
///|
/// Get VU ID in test
pub fn vu_id_in_test() -> Int {
let vu_obj = execution_vu()
let id : Int = vu_obj["idInTest"].cast()
id
}
///|
/// Get iteration number in instance
pub fn iteration_in_instance() -> Int {
let vu_obj = execution_vu()
let iter : Int = vu_obj["iterationInInstance"].cast()
iter
}
///|
/// Get iteration number in scenario
pub fn iteration_in_scenario() -> Int {
let vu_obj = execution_vu()
let iter : Int = vu_obj["iterationInScenario"].cast()
iter
}
///|
/// Get scenario name
pub fn scenario_name() -> String {
let scenario_obj = execution_scenario()
let name : String = scenario_obj["name"].cast()
name
}
///|
/// Get scenario executor
pub fn scenario_executor() -> String {
let scenario_obj = execution_scenario()
let executor : String = scenario_obj["executor"].cast()
executor
}
///|
/// Get scenario progress (0.0 to 1.0)
pub fn scenario_progress() -> Double {
let scenario_obj = execution_scenario()
let progress : Double = scenario_obj["progress"].cast()
progress
}