33 lines
1.0 KiB
Go
33 lines
1.0 KiB
Go
|
package chaos
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"io"
|
||
|
)
|
||
|
|
||
|
// State is the state for the chaos actor used by some methods to invoke
|
||
|
// behaviours in the vm or runtime.
|
||
|
type State struct {
|
||
|
// Value can be updated by chaos actor methods to test illegal state
|
||
|
// mutations when the state is in readonly mode for example.
|
||
|
Value string
|
||
|
// Unmarshallable is a sentinel value. If the slice contains no values, the
|
||
|
// State struct will encode as CBOR without issue. If the slice is non-nil,
|
||
|
// CBOR encoding will fail.
|
||
|
Unmarshallable []*UnmarshallableCBOR
|
||
|
}
|
||
|
|
||
|
// UnmarshallableCBOR is a type that cannot be marshalled or unmarshalled to
|
||
|
// CBOR despite implementing the CBORMarshaler and CBORUnmarshaler interface.
|
||
|
type UnmarshallableCBOR struct{}
|
||
|
|
||
|
// UnmarshalCBOR will fail to unmarshal the value from CBOR.
|
||
|
func (t *UnmarshallableCBOR) UnmarshalCBOR(io.Reader) error {
|
||
|
return fmt.Errorf("failed to unmarshal cbor")
|
||
|
}
|
||
|
|
||
|
// MarshalCBOR will fail to marshal the value to CBOR.
|
||
|
func (t *UnmarshallableCBOR) MarshalCBOR(io.Writer) error {
|
||
|
return fmt.Errorf("failed to marshal cbor")
|
||
|
}
|