3 set auto_path
[concat [list ..
] $auto_path]
5 #package require TLC-base 0.79
6 package require TLC
0.79
8 if {[file exists loglevels_class
]} {
9 tlc
::Baselog::load_classmap loglevels_class
12 namespace eval crypto
{
17 tlc
::Signal #auto signals(bar_pool) -name "bar_pool"
19 package require Authenticator
20 authenticator
::Authenticator auth
-ip localhost
-pbkey "authenticator.pub"
22 authenticator
::Component comp
-svc "test" -auth ::auth -prkeyfn "test.priv"
24 tlc
::DSchan_backend ds
-comp comp
-tag "testds" -headers {
25 "ID" "Foo" "Bar" "Baz"
26 } -dbfile "/tmp/test_dschan.db" -persist 1
29 proc check_cb
{user pool extra
} {
30 puts "check_cb: user: ($user) pool: ($pool) extra: ($extra)"
31 return [expr {[$user type
] == "user"}]
34 ds register_pool
"foo" [list check_cb
]
38 foreach rid
[ds id_list
"foo"] {
45 proc randomstring
{} {
46 set length
[expr {round
(rand
() * 5) + 4}]
49 set lotto
[expr {round
(rand
() * 25) + 97}]
50 append build
[format %c
$lotto]
58 ds add_item
"foo" [list [incr ::id] [randomstring
] [randomstring
] [randomstring
]]
62 set starttime
[clock seconds
]
65 after cancel
$::afterid; set ::afterid ""
66 puts "delta from start: ([expr {([clock seconds] - $::starttime) % 10}])"
67 if {([clock seconds
] - $::starttime) % 10 > 5} {
68 $::signals(bar_pool
) set_state
1
70 $::signals(bar_pool
) set_state
0
72 set item_count
[ds item_count
"foo"]
73 if {$item_count < 10} {
75 } elseif
{$item_count > 200} {
78 set action
[lindex {add change remove
} [expr {round
(rand
() * 3)}]]
83 ds add_item
"foo" [list [incr ::id] [randomstring
] [randomstring
] [randomstring
]]
87 set id
[lindex [ds id_list
"foo"] [expr {round
(rand
() * ($item_count-1))}]]
88 ds change_item
"foo" $id [list $id [randomstring
] [randomstring
] [randomstring
]]
92 set id
[lindex [ds id_list
"foo"] [expr {round
(rand
() * ($item_count-1))}]]
93 ds remove_item
"foo" $id
97 set ::afterid [after 2000 frob
]
102 proc bar_pool_changed
{newstate
} {
104 ds register_pool
"bar" [list check_cb
]
105 ds add_item
"bar" [list [incr ::id] "Hello from bar" [randomstring
] [randomstring
]]
107 if {[ds pool_exists
"bar"]} {
108 ds deregister_pool
"bar"
114 .tools add
"Add pool" {
115 ds register_pool
"baz" [list check_cb
]
116 ds add_item
"baz" [list [incr ::id] "Hello from baz" [randomstring
] [randomstring
]]
118 .tools add
"Add item" {
119 ds add_item
"baz" [list [incr ::id] "Hello from baz" "Additional item" [randomstring
]]
121 .tools add
"Remove pool" {
122 ds deregister_pool
"baz"
125 ds add_item
"foo" [list [incr ::id] "Only A" "filter test" [randomstring
]]
128 ds add_item
"foo" [list [incr ::id] "Only B" "filter test" [randomstring
]]
130 .tools add
"Close" {exit} right
135 $signals(bar_pool
) attach_output
[list bar_pool_changed
]