terminals/tests/Xtreams__PipeReadingWritingTest.st
author joe
Fri, 15 Mar 2013 19:39:10 -0400
changeset 112 b6b3d8435bb7
parent 71 b5baf23694f3
permissions -rw-r--r--
- Xtreams::FileReadingWritingTest class: Xtreams::FileReadingWritingTest added: #version_HG - stx_goodies_xtreams_terminals_tests class: stx_goodies_xtreams_terminals_tests changed: #classNamesAndAttributes - Xtreams::BlockClosureReadingWritingTest class: Xtreams::BlockClosureReadingWritingTest added: #version_HG - Xtreams::PipeReadingWritingTest class: Xtreams::PipeReadingWritingTest added: #version_HG - Xtreams::BufferReadingWritingTest class: Xtreams::BufferReadingWritingTest added: #version_HG - Xtreams::BlockClosureTest class: Xtreams::BlockClosureTest added: #version_HG - Xtreams::RingBufferReadingWritingTest class: Xtreams::RingBufferReadingWritingTest added: #version_HG - Xtreams::BufferedWriteStreamTest class: Xtreams::BufferedWriteStreamTest added: #version_HG - Xtreams::CollectionReadingWritingTest class: Xtreams::CollectionReadingWritingTest added: #version_HG - Xtreams::SocketReadingWritingTest class: Xtreams::SocketReadingWritingTest added: #version_HG - Xtreams::ElasticBufferReadingWritingTest class: Xtreams::ElasticBufferReadingWritingTest added: #version_HG
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/xtreams/terminals/tests' }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     2
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     3
"{ NameSpace: Xtreams }"
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     4
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     5
FiniteReadingWritingTests subclass:#PipeReadingWritingTest
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     6
	instanceVariableNames:''
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
     7
	classVariableNames:''
26
d740fff525d4 added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 9
diff changeset
     8
	poolDictionaries:'XtreamsPool'
d740fff525d4 added XtreamsPool to fix DefaultBufferSize; set proper category names
mkobetic
parents: 9
diff changeset
     9
	category:'Xtreams-Terminals-Tests'
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    10
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    11
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    12
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    13
!PipeReadingWritingTest methodsFor:'initialize-release'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    14
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    15
setUp
43
mkobetic
parents: 42
diff changeset
    16
        | pipe |
mkobetic
parents: 42
diff changeset
    17
        pipe := PipeStream makePipe.
mkobetic
parents: 42
diff changeset
    18
        input := pipe first reading.
mkobetic
parents: 42
diff changeset
    19
        output := pipe last writing.
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    20
!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    21
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    22
tearDown
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    23
	input close.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    24
	output close.
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    25
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    26
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    27
!PipeReadingWritingTest methodsFor:'utilities'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    28
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    29
timeout: timeoutDuration server: serverBlock client: clientBlock
43
mkobetic
parents: 42
diff changeset
    30
        "For tests that must be able to write and read at the same time, where they may block on each.
mkobetic
parents: 42
diff changeset
    31
         Sockets, Pipes have an operating system buffer which dictates its bandwidth."
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    32
43
mkobetic
parents: 42
diff changeset
    33
        |       timeout
mkobetic
parents: 42
diff changeset
    34
                serverSuccess serverProcess serverLock
mkobetic
parents: 42
diff changeset
    35
                clientSuccess clientProcess clientLock|
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    36
43
mkobetic
parents: 42
diff changeset
    37
        timeout := false.
mkobetic
parents: 42
diff changeset
    38
        serverLock := Semaphore new.
mkobetic
parents: 42
diff changeset
    39
        clientLock := Semaphore new.
mkobetic
parents: 42
diff changeset
    40
        serverSuccess := clientSuccess := false.
mkobetic
parents: 42
diff changeset
    41
        serverProcess := [serverSuccess := serverBlock value. serverLock signal] fork.
mkobetic
parents: 42
diff changeset
    42
        clientProcess := [clientSuccess := clientBlock value. clientLock signal] fork.
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    43
43
mkobetic
parents: 42
diff changeset
    44
        serverLock wait.
mkobetic
parents: 42
diff changeset
    45
        clientLock wait.
mkobetic
parents: 42
diff changeset
    46
mkobetic
parents: 42
diff changeset
    47
        self assert: serverSuccess.
mkobetic
parents: 42
diff changeset
    48
        self assert: clientSuccess.
mkobetic
parents: 42
diff changeset
    49
        self deny: timeout
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    50
! !
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    51
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    52
!PipeReadingWritingTest class methodsFor:'documentation'!
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    53
112
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    54
version_HG
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    55
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    56
    ^ '$Changeset: <not expanded> $'
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    57
!
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    58
9
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    59
version_SVN
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    60
    ^ '$Id$'
6c90659cf105 first cut
Martin Kobetic <mkobetic@gmail.com>
parents:
diff changeset
    61
! !
112
b6b3d8435bb7 - Xtreams::FileReadingWritingTest
joe
parents: 71
diff changeset
    62