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")
|
|
}
|