| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Ouroboros.Network.Protocol.Handshake.Test
Synopsis
- tests :: TestTree
- data VersionNumber
- versionNumberCodec :: CodecCBORTerm (String, Maybe Int) VersionNumber
- versionNumberHandshakeCodec :: forall (m :: Type -> Type). MonadST m => Codec (Handshake VersionNumber Term) DeserialiseFailure m ByteString
- data VersionData = VersionData {
- dataVersion0 :: Int
- dataVersion1 :: Bool
- dataVersion2 :: Bool
- dataCodecCBORTerm :: VersionNumber -> CodecCBORTerm Text VersionData
- arbitraryVersionData :: VersionNumber -> Gen VersionData
- application :: VersionData -> VersionData -> Bool
- genValidVersion :: VersionNumber -> Gen (Version VersionData Bool)
- genInvalidVersion :: VersionNumber -> Gen (Version VersionData Bool)
- genValidVersions :: Gen (Versions VersionNumber VersionData Bool)
- genVersions :: Gen (Versions VersionNumber VersionData Bool)
- newtype ArbitraryValidVersions = ArbitraryValidVersions {
- runArbitraryValidVersions :: Versions VersionNumber VersionData Bool
- prop_arbitrary_ArbitraryValidVersions :: ArbitraryValidVersions -> Bool
- prop_shrink_ArbitraryValidVersions :: ArbitraryValidVersions -> Bool
- data ArbitraryVersions = ArbitraryVersions (Versions VersionNumber VersionData Bool) (Versions VersionNumber VersionData Bool)
- validVersion :: VersionNumber -> Version VersionData Bool -> Bool
- prop_arbitrary_ArbitraryVersions :: ArbitraryVersions -> Property
- maybeAccept :: Accept a -> Maybe a
- prop_connect :: ArbitraryVersions -> Property
- prop_channel :: (MonadAsync m, MonadCatch m, MonadEvaluate m, MonadST m) => m (Channel m ByteString, Channel m ByteString) -> Versions VersionNumber VersionData Bool -> Versions VersionNumber VersionData Bool -> m Property
- prop_channel_ST :: ArbitraryVersions -> Property
- prop_channel_IO :: ArbitraryVersions -> Property
- prop_pipe_IO :: ArbitraryVersions -> Property
- prop_channel_asymmetric :: (MonadAsync m, MonadEvaluate m, MonadMask m, MonadST m) => m (Channel m ByteString, Channel m ByteString) -> Versions VersionNumber VersionData Bool -> m Property
- prop_channel_asymmetric_ST :: ArbitraryVersions -> Property
- prop_channel_asymmetric_IO :: ArbitraryVersions -> Property
- prop_pipe_asymmetric_IO :: ArbitraryVersions -> Property
- prop_acceptable_symmetric :: (Acceptable vData, Eq vData) => vData -> vData -> Bool
- prop_acceptable_symmetric_VersionData :: VersionData -> VersionData -> Bool
- prop_query_version :: (MonadAsync m, MonadCatch m, MonadEvaluate m, Eq vData, Acceptable vData, NFData vData, Queryable vData, Show vData, NFData vNumber, Ord vNumber, Show vNumber) => m (Channel m ByteString, Channel m ByteString) -> Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> (vData -> vData) -> m Property
- prop_acceptOrRefuse_symmetric :: forall vNumber vData r. (Acceptable vData, Eq vData, Show vData, Ord vNumber, Show vNumber) => Versions vNumber vData r -> Versions vNumber vData r -> Property
- prop_acceptOrRefuse_symmetric_VersionData :: ArbitraryVersions -> Property
- prop_channel_simultaneous_open :: (MonadAsync m, MonadCatch m, MonadEvaluate m, Acceptable vData, NFData vData, NFData vNumber, Ord vNumber) => m (Channel m ByteString, Channel m ByteString) -> Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> m Property
- prop_channel_simultaneous_open_ST :: ArbitraryVersions -> Property
- prop_channel_simultaneous_open_IO :: ArbitraryVersions -> Property
- prop_channel_simultaneous_open_sim :: forall vNumber vData m. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadLabelledSTM m, MonadEvaluate m, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, Acceptable vData, NFData vData, NFData vNumber, Ord vNumber) => Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> m Property
- prop_channel_simultaneous_open_SimNet :: ArbitraryVersions -> Property
- newtype ArbitraryRefuseReason = ArbitraryRefuseReason {
- runArbitraryRefuseReason :: RefuseReason VersionNumber
- prop_codec_RefuseReason :: ArbitraryRefuseReason -> Bool
- prop_codec_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property
- prop_codec_splits2_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property
- prop_codec_splits3_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property
- prop_codec_cbor :: AnyMessage (Handshake VersionNumber Term) -> Property
- prop_codec_valid_cbor :: AnyMessage (Handshake VersionNumber Term) -> Property
Documentation
data VersionNumber Source #
Testing version number
Instances
versionNumberCodec :: CodecCBORTerm (String, Maybe Int) VersionNumber Source #
versionNumberHandshakeCodec :: forall (m :: Type -> Type). MonadST m => Codec (Handshake VersionNumber Term) DeserialiseFailure m ByteString Source #
data VersionData Source #
Constructors
| VersionData | |
Fields
| |
Instances
| Arbitrary VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test | |||||
| CoArbitrary VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods coarbitrary :: VersionData -> Gen b -> Gen b # | |||||
| NFData VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods rnf :: VersionData -> () # | |||||
| Generic VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Associated Types
| |||||
| Show VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods showsPrec :: Int -> VersionData -> ShowS # show :: VersionData -> String # showList :: [VersionData] -> ShowS # | |||||
| Eq VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test | |||||
| Acceptable VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods acceptableVersion :: VersionData -> VersionData -> Accept VersionData | |||||
| Queryable VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods queryVersion :: VersionData -> Bool | |||||
| type Rep VersionData Source # | |||||
Defined in Ouroboros.Network.Protocol.Handshake.Test type Rep VersionData = D1 ('MetaData "VersionData" "Ouroboros.Network.Protocol.Handshake.Test" "ouroboros-network-1.0.0.0-inplace-protocols-tests-lib" 'False) (C1 ('MetaCons "VersionData" 'PrefixI 'True) (S1 ('MetaSel ('Just "dataVersion0") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int) :*: (S1 ('MetaSel ('Just "dataVersion1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool) :*: S1 ('MetaSel ('Just "dataVersion2") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))) | |||||
dataCodecCBORTerm :: VersionNumber -> CodecCBORTerm Text VersionData Source #
application :: VersionData -> VersionData -> Bool Source #
genValidVersion :: VersionNumber -> Gen (Version VersionData Bool) Source #
Generate a valid ProtocolVersion VersionNumber r
genInvalidVersion :: VersionNumber -> Gen (Version VersionData Bool) Source #
Generate an invalid .ProtocolVersion VersionNumber r
genValidVersions :: Gen (Versions VersionNumber VersionData Bool) Source #
Generate valid Versions.
genVersions :: Gen (Versions VersionNumber VersionData Bool) Source #
Generate possibly invalid Versions.
newtype ArbitraryValidVersions Source #
Constructors
| ArbitraryValidVersions | |
Fields
| |
Instances
| Arbitrary ArbitraryValidVersions Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods arbitrary :: Gen ArbitraryValidVersions # shrink :: ArbitraryValidVersions -> [ArbitraryValidVersions] # | |
| Show ArbitraryValidVersions Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods showsPrec :: Int -> ArbitraryValidVersions -> ShowS # show :: ArbitraryValidVersions -> String # showList :: [ArbitraryValidVersions] -> ShowS # | |
data ArbitraryVersions Source #
Generators for pairs of arbitrary list of versions.
Constructors
| ArbitraryVersions (Versions VersionNumber VersionData Bool) (Versions VersionNumber VersionData Bool) |
Instances
| Arbitrary ArbitraryVersions Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test | |
| Show ArbitraryVersions Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods showsPrec :: Int -> ArbitraryVersions -> ShowS # show :: ArbitraryVersions -> String # showList :: [ArbitraryVersions] -> ShowS # | |
validVersion :: VersionNumber -> Version VersionData Bool -> Bool Source #
Check if a is valid.ProtocolVersion VersionNumber r
maybeAccept :: Accept a -> Maybe a Source #
prop_connect :: ArbitraryVersions -> Property Source #
Run a handshake protocol, without going via a channel.
prop_channel :: (MonadAsync m, MonadCatch m, MonadEvaluate m, MonadST m) => m (Channel m ByteString, Channel m ByteString) -> Versions VersionNumber VersionData Bool -> Versions VersionNumber VersionData Bool -> m Property Source #
Run a simple block-fetch client and server using connected channels.
prop_channel_ST :: ArbitraryVersions -> Property Source #
Run prop_channel in the simulation monad.
prop_channel_IO :: ArbitraryVersions -> Property Source #
Run prop_channel in the IO monad.
prop_pipe_IO :: ArbitraryVersions -> Property Source #
Run prop_channel in the IO monad using local pipes.
prop_channel_asymmetric Source #
Arguments
| :: (MonadAsync m, MonadEvaluate m, MonadMask m, MonadST m) | |
| => m (Channel m ByteString, Channel m ByteString) | |
| -> Versions VersionNumber VersionData Bool | client versions |
| -> m Property |
Run a simple handshake client and server using connected channels.
The server can only decode a subset of versions send by client.
This test is using a fixed server Versions which can only accept
a single version Version_1 (it cannot decode any other version).
prop_channel_asymmetric_ST :: ArbitraryVersions -> Property Source #
Run prop_channel in the simulation monad.
prop_channel_asymmetric_IO :: ArbitraryVersions -> Property Source #
Run prop_channel in the IO monad.
prop_pipe_asymmetric_IO :: ArbitraryVersions -> Property Source #
Run prop_channel in the IO monad using local pipes.
prop_acceptable_symmetric :: (Acceptable vData, Eq vData) => vData -> vData -> Bool Source #
prop_query_version :: (MonadAsync m, MonadCatch m, MonadEvaluate m, Eq vData, Acceptable vData, NFData vData, Queryable vData, Show vData, NFData vNumber, Ord vNumber, Show vNumber) => m (Channel m ByteString, Channel m ByteString) -> Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> (vData -> vData) -> m Property Source #
Run a query for the server's supported version.
prop_acceptOrRefuse_symmetric :: forall vNumber vData r. (Acceptable vData, Eq vData, Show vData, Ord vNumber, Show vNumber) => Versions vNumber vData r -> Versions vNumber vData r -> Property Source #
Run prop_peerSharing_symmetric with SimNet.
| acceptOrRefuse is symmetric in the following sense:
Either both sides: * accept the same version and version data; or * refuse
The refuse reason might differ, although if one side refuses it with
Refused the other side must refuse the same version.
prop_channel_simultaneous_open :: (MonadAsync m, MonadCatch m, MonadEvaluate m, Acceptable vData, NFData vData, NFData vNumber, Ord vNumber) => m (Channel m ByteString, Channel m ByteString) -> Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> m Property Source #
Run two handshake clients against each other, which simulates a TCP simultaneous open.
prop_channel_simultaneous_open_ST :: ArbitraryVersions -> Property Source #
Run prop_channel_simultaneous_open in the simulation monad.
prop_channel_simultaneous_open_IO :: ArbitraryVersions -> Property Source #
Run prop_channel_simultaneous_open in the IO monad.
prop_channel_simultaneous_open_sim :: forall vNumber vData m. (Alternative (STM m), MonadAsync m, MonadDelay m, MonadLabelledSTM m, MonadEvaluate m, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, Acceptable vData, NFData vData, NFData vNumber, Ord vNumber) => Codec (Handshake vNumber Term) DeserialiseFailure m ByteString -> VersionDataCodec Term vNumber vData -> Versions vNumber vData Bool -> Versions vNumber vData Bool -> m Property Source #
newtype ArbitraryRefuseReason Source #
Constructors
| ArbitraryRefuseReason | |
Fields
| |
Instances
| Arbitrary ArbitraryRefuseReason Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods arbitrary :: Gen ArbitraryRefuseReason # shrink :: ArbitraryRefuseReason -> [ArbitraryRefuseReason] # | |
| Show ArbitraryRefuseReason Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods showsPrec :: Int -> ArbitraryRefuseReason -> ShowS # show :: ArbitraryRefuseReason -> String # showList :: [ArbitraryRefuseReason] -> ShowS # | |
| Eq ArbitraryRefuseReason Source # | |
Defined in Ouroboros.Network.Protocol.Handshake.Test Methods (==) :: ArbitraryRefuseReason -> ArbitraryRefuseReason -> Bool # (/=) :: ArbitraryRefuseReason -> ArbitraryRefuseReason -> Bool # | |
prop_codec_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property Source #
prop_codec_splits2_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property Source #
prop_codec_splits3_Handshake :: AnyMessage (Handshake VersionNumber Term) -> Property Source #
prop_codec_cbor :: AnyMessage (Handshake VersionNumber Term) -> Property Source #
prop_codec_valid_cbor :: AnyMessage (Handshake VersionNumber Term) -> Property Source #
Check that the encoder produces a valid CBOR.