Using the NoOp Executor¶
This guide covers how to use the noop executor for testing, development, and validation without cloud credentials or real resources.
When to Use NoOp¶
The NoOp executor is a testing tool. It simulates hibernation operations so you can validate:
- Schedule logic (do off-hours trigger correctly?)
- Execution strategies (does DAG ordering work?)
- Error recovery (does retry logic handle failures?)
- Plan structure (is the YAML valid?)
It requires no cloud credentials, no external resources, and makes no API calls.
Basic Setup¶
1. Create Dummy Connectors¶
NoOp validates that a connector exists but doesn't use it:
---
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: CloudProvider
metadata:
name: noop-aws
namespace: hibernator-system
spec:
type: aws
aws:
accountId: "000000000000"
region: us-east-1
auth:
serviceAccount: {}
---
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: K8SCluster
metadata:
name: noop-cluster
namespace: hibernator-system
spec:
k8s:
inCluster: true
2. Create a NoOp HibernatePlan¶
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: HibernatePlan
metadata:
name: noop-test
namespace: hibernator-system
spec:
schedule:
timezone: Asia/Jakarta
offHours:
- start: "20:00"
end: "06:00"
daysOfWeek: ["MON", "TUE", "WED", "THU", "FRI"]
execution:
strategy:
type: Sequential
behavior:
mode: Strict
targets:
- name: noop-fast
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "none"
Use Cases¶
Test Sequential Execution¶
Observe targets executing one at a time with different delays:
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: HibernatePlan
metadata:
name: noop-sequential
namespace: hibernator-system
spec:
schedule:
timezone: Asia/Jakarta
offHours:
- start: "20:00"
end: "06:00"
daysOfWeek: ["MON", "TUE", "WED", "THU", "FRI"]
execution:
strategy:
type: Sequential
behavior:
mode: Strict
targets:
- name: step-1
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "none"
- name: step-2
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 2
failureMode: "none"
- name: step-3
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "none"
Test DAG Dependencies¶
Validate dependency ordering without real resources:
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: HibernatePlan
metadata:
name: noop-dag
namespace: hibernator-system
spec:
schedule:
timezone: Asia/Jakarta
offHours:
- start: "20:00"
end: "06:00"
daysOfWeek: ["MON", "TUE", "WED", "THU", "FRI"]
execution:
strategy:
type: DAG
maxConcurrency: 2
dependencies:
- from: frontend
to: backend
- from: cache
to: database
- from: backend
to: database
behavior:
mode: BestEffort
targets:
- name: frontend
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
- name: backend
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 2
- name: cache
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
- name: database
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 3
Expected shutdown order:
frontendandcachestart in parallel (no upstream dependencies)backendstarts afterfrontendcompletesdatabasestarts after bothbackendandcachecomplete
Test Error Recovery¶
Simulate failures to validate retry and recovery behavior:
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: HibernatePlan
metadata:
name: noop-failure-test
namespace: hibernator-system
spec:
schedule:
timezone: Asia/Jakarta
offHours:
- start: "20:00"
end: "06:00"
daysOfWeek: ["MON", "TUE", "WED", "THU", "FRI"]
execution:
strategy:
type: Sequential
behavior:
mode: BestEffort
retries: 3
targets:
- name: will-succeed
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "none"
- name: will-fail-shutdown
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "shutdown"
failureMessage: "Simulated: network timeout connecting to resource"
- name: will-fail-wakeup
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
failureMode: "wakeup"
failureMessage: "Simulated: resource in unexpected state"
Test Staged Execution¶
apiVersion: hibernator.ardikabs.com/v1alpha1
kind: HibernatePlan
metadata:
name: noop-staged
namespace: hibernator-system
spec:
schedule:
timezone: Asia/Jakarta
offHours:
- start: "20:00"
end: "06:00"
daysOfWeek: ["MON", "TUE", "WED", "THU", "FRI"]
execution:
strategy:
type: Staged
stages:
- name: tier-1
parallel: true
targets:
- frontend-a
- frontend-b
- name: tier-2
parallel: false
targets:
- backend
- worker
- name: tier-3
parallel: false
targets:
- database
behavior:
mode: Strict
targets:
- name: frontend-a
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
- name: frontend-b
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 2
- name: backend
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
- name: worker
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 1
- name: database
type: noop
connectorRef:
kind: CloudProvider
name: noop-aws
parameters:
randomDelaySeconds: 3
Parameters Reference¶
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
randomDelaySeconds |
int | 1 | 0–30 | Maximum random delay in seconds |
failureMode |
string | "none" |
none, shutdown, wakeup, both |
When to simulate failures |
failureMessage |
string | (auto-generated) | — | Custom error message |
Deterministic testing
Set randomDelaySeconds: 0 for consistent, repeatable test runs without timing variance.