| 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, 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, 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, Eq vData, Acceptable vData, Queryable vData, Show vData, 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, Acceptable vData, 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, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, Acceptable vData, 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
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, 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, 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, Eq vData, Acceptable vData, Queryable vData, Show vData, 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, Acceptable vData, 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, MonadMask m, MonadThrow (STM m), MonadTime m, MonadTimer m, Acceptable vData, 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.